Hallo,
ich habe folgendes Problem und kann keine Lösung dafür finden:
Ich habe eine abstrakte Klasse AbstractParticle, von der mehrere verschiedene Klassen erben, die verschiedene zusätzliche Eigenschaften besitzen (z.B. zusätzlich eine Eigenschaft "type" mit entsprechenden Gettern und Settern, oder die Eigenschaft "color". Es gibt aber auch welche, die beide Eigsnchaften besitzen.)
Nun habe ich eine weitere Klasse, die generisch ist, wobei der formale Parameter die Klasse AbstractParticle erweitern muss. Diese Klasse soll für alle AbstractParticles, die die Eigenschaft "type" besitzen verwendbar sein. Nun weiß ich aber nicht, wie ich das Problem lösen kann, denn:
- verwende ich ein Interface (z.B. TypeParticle, welches Getter und Setter für die Eigenschaft type definiert), dann ist das in Verwendung mit Generics ja nicht möglich, oder? Also z.B. Klasse<T implements TypeParticle> gibt eine Fehlermeldung. Selbst wenn es so möglich wäre, wäre ja theoretisch nicht garantiert, dass T dann auch AbstractParticle erweitert, weil ich in einem Interface ja nicht angeben kann, dass eine Superklasse erweitert werden muss.
- verwende ich eine abstrakte Klasse für TypeParticle, dann funktioniert das Ganze zunächst, wenn diese entsprechend AbstractParticle erweitert, aber wenn ich nun ein Particle habe, dass sowohl die Eigenschaften "type" und "color" besitzen muss, dann müsste dieses ja zwei Klassen erweitern und das geht ja auch wieder nicht. Ich könnte hier natürlich eine weitere abstrakte Klasse TypeAndColorParticle anlegen, aber das wird bei mehr als zwei Eigenschaften ja unnötig (?) kompliziert und ist dann auch wieder nicht mit der generischen Klasse zusammen verwendbar.
Wenn jemand eine Idee hat würde ich mich sehr freuen!
Viele Grüße und vielen Dank!
ich habe folgendes Problem und kann keine Lösung dafür finden:
Ich habe eine abstrakte Klasse AbstractParticle, von der mehrere verschiedene Klassen erben, die verschiedene zusätzliche Eigenschaften besitzen (z.B. zusätzlich eine Eigenschaft "type" mit entsprechenden Gettern und Settern, oder die Eigenschaft "color". Es gibt aber auch welche, die beide Eigsnchaften besitzen.)
Nun habe ich eine weitere Klasse, die generisch ist, wobei der formale Parameter die Klasse AbstractParticle erweitern muss. Diese Klasse soll für alle AbstractParticles, die die Eigenschaft "type" besitzen verwendbar sein. Nun weiß ich aber nicht, wie ich das Problem lösen kann, denn:
- verwende ich ein Interface (z.B. TypeParticle, welches Getter und Setter für die Eigenschaft type definiert), dann ist das in Verwendung mit Generics ja nicht möglich, oder? Also z.B. Klasse<T implements TypeParticle> gibt eine Fehlermeldung. Selbst wenn es so möglich wäre, wäre ja theoretisch nicht garantiert, dass T dann auch AbstractParticle erweitert, weil ich in einem Interface ja nicht angeben kann, dass eine Superklasse erweitert werden muss.
- verwende ich eine abstrakte Klasse für TypeParticle, dann funktioniert das Ganze zunächst, wenn diese entsprechend AbstractParticle erweitert, aber wenn ich nun ein Particle habe, dass sowohl die Eigenschaften "type" und "color" besitzen muss, dann müsste dieses ja zwei Klassen erweitern und das geht ja auch wieder nicht. Ich könnte hier natürlich eine weitere abstrakte Klasse TypeAndColorParticle anlegen, aber das wird bei mehr als zwei Eigenschaften ja unnötig (?) kompliziert und ist dann auch wieder nicht mit der generischen Klasse zusammen verwendbar.
Wenn jemand eine Idee hat würde ich mich sehr freuen!
Viele Grüße und vielen Dank!