H
Hans-Michael
Gast
Hallo!
Ich habe gerade in Backschat, Rücker "Enterprise JavaBeans 3.0", S.97 ein Beispiel gesehen dessen Syntax ich nicht verstehe:
Das Construct auf Zeile 19
public void add(? extends Serializable id, int number) {
bemängelt der Compiler (Java 5) natürlich.
Meine Fragen:
1. Wie komen die Autoren auf so was? Ich hab jedenfalls bei den neuen Features von Java 6 nichts in der Richtung gefunden.
2. Wenn man
schreibt bekommt man einen Fehler weil man auf einer Collection<? extends T> kein add ausführen kann weil nicht klar ist welche Typen zur Laufzeit in der Collection sind.
Wie kann man überhaupt erreichen was mit der Klasse bezweckt wird?
Ich habe gerade in Backschat, Rücker "Enterprise JavaBeans 3.0", S.97 ein Beispiel gesehen dessen Syntax ich nicht verstehe:
Code:
import java.io.Serializable;
import java.util.HashMap;
public class ShoppingCart {
public ShoppingCart() {
this.products = new HashMap();
}
private HashMap<? extends Serializable, Integer> products;
public void set(HashMap<? extends Serializable, Integer> products) {
this.products = products;
}
public void add(? extends Serializable id, int number) {
this.products.put(id, number);
}
}
Das Construct auf Zeile 19
public void add(? extends Serializable id, int number) {
bemängelt der Compiler (Java 5) natürlich.
Meine Fragen:
1. Wie komen die Autoren auf so was? Ich hab jedenfalls bei den neuen Features von Java 6 nichts in der Richtung gefunden.
2. Wenn man
Code:
public void add(Serializable id, int number) {
this.products.put(id, number);
}
Wie kann man überhaupt erreichen was mit der Klasse bezweckt wird?