Utknąłem na tym: http://docs.oracle.com/javase/tutorial/java/generics/bounded.html
Niby pierwsze zdanie rozumiem, służą do ograniczenia typów. Jednak nie rozumiem przykładu, a jest on kluczowy:
public class Box<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
public <U extends Number> void inspect(U u){
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.set(new Integer(10));
integerBox.inspect("some text"); // error: this is still String!
}
}
I jeszcze jedno pytanie: jak rozumieć te literki SUV? Czy w w/w przykładzie obojętnie czy dam U, czy S, U, V? Czy musi być to jedna litera?
Przytoczę z tutoriala..
- E - Element (used extensively by the Java Collections Framework)
- K - Key
- N - Number
- T - Type
- V - Value
- S,U,V etc. - 2nd, 3rd, 4th types