Squealer
Legacy Member
Iets dat ik nooit heb begrepen, waar ik niet genoeg uitleg over vind en wat ik zelf nog nooit gedaan heb in mijn code, is een constructie als deze:
Een generic method of constructor dus.
Wat ik dan zou doen, is dit:
Gewoon een referentie naar de superclass gebruiken dus.
Wat is nu de meerwaarde van de generieke versie?
Nog een voorbeeld uit de java tutorial van sun:
Wat is het nut hiervan, als het volgende even goed compileert en dezelfde output heeft, namelijk
T: java.lang.Integer
U: java.lang.String
Code:
class GenericClass {
private double val;
[B]<T extends Number> GenericClass(T arg) {[/B]
val = arg.doubleValue();
}
void showValue() {
System.out.println("val: " + val);
}
}
Een generic method of constructor dus.
Wat ik dan zou doen, is dit:
Code:
class GenericClass {
private double val;
[B]GenericClass(Number arg) {[/B]
val = arg.doubleValue();
}
void showValue() {
System.out.println("val: " + val);
}
}
Wat is nu de meerwaarde van de generieke versie?
Nog een voorbeeld uit de java tutorial van sun:
Code:
public class Box<T> {
private T t;
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
[B] public <U> void inspect(U u){[/B]
System.out.println("T: " + t.getClass().getName());
System.out.println("U: " + u.getClass().getName());
}
public static void main(String[] args) {
Box<Integer> integerBox = new Box<Integer>();
integerBox.add(new Integer(10));
integerBox.inspect("some text");
}
}
Wat is het nut hiervan, als het volgende even goed compileert en dezelfde output heeft, namelijk
T: java.lang.Integer
U: java.lang.String
Code:
...
[B]public void inspect(Object u){[/B]
System.out.println("T: " + t.getClass().getName());
System.out.println("U: " + u.getClass().getName());
}
public static void main(String[] args) {
Box<Integer> integerBox = new Box<Integer>();
integerBox.add(new Integer(10));
integerBox.inspect("some text");
}
}

xios diepenbeek.
