G
Guest
Gast
Hallo,
bei meinen ersten Gehversuchen mit Generics bin ich auf folgende Sache gestoßen.
Ich habe mir ein Beispiel definiert (Presse, die Saft aus Früchten pressen kann, die ihrerseits auspressbar sind ;-))
passende Frucht:
Das klappt auch toll. Allerdings bin ich über die Konstruktion des Presse-Objekts etwas ins Stutzen gekommen:
Laut meinem Buch müsste es heißen:
(funktioniert)
Allerdings funktioniert auch:
Ich hätte nun gerne gewusst, was richtig ist (Spec gibt's ja leider noch nicht zum Download) - oder ist das irgendwie so ein Bequemlichkeits-Ding?
Danke für Eure Hinweise!
Gruß,
Karl
P.S.: Ich habe extra getestet, ob das Verhalten identisch ist, indem ich versucht habe, in der Orangenpresse eine Zitrone auszupressen - korrekte Fehlermeldung in beiden Fällen, dass Zitronen eben keine Orangen sind ;-).
bei meinen ersten Gehversuchen mit Generics bin ich auf folgende Sache gestoßen.
Ich habe mir ein Beispiel definiert (Presse, die Saft aus Früchten pressen kann, die ihrerseits auspressbar sind ;-))
Code:
public class Presse<E extends Fruit & IPressable> {
public Presse() {
}
public void startPressing(E fruit) {
fruit.press();
}
}
passende Frucht:
Code:
public class Orange extends Fruit implements IPressable {...}
Das klappt auch toll. Allerdings bin ich über die Konstruktion des Presse-Objekts etwas ins Stutzen gekommen:
Laut meinem Buch müsste es heißen:
Code:
Presse<Orange> p = new Presse<Orange>();
Allerdings funktioniert auch:
Code:
Presse<Orange> p = new Presse();
Ich hätte nun gerne gewusst, was richtig ist (Spec gibt's ja leider noch nicht zum Download) - oder ist das irgendwie so ein Bequemlichkeits-Ding?
Danke für Eure Hinweise!
Gruß,
Karl
P.S.: Ich habe extra getestet, ob das Verhalten identisch ist, indem ich versucht habe, in der Orangenpresse eine Zitrone auszupressen - korrekte Fehlermeldung in beiden Fällen, dass Zitronen eben keine Orangen sind ;-).