ho questo codice:Java Generics: Bounds multipli
public class Test {
public static void main(String[] args) {
Test t = new Test();
t.callTest();
}
public void callTest() {
GenericTest gt = new GenericTest<Date>(); // this line don't compile
gt.test(new Date());
}
class GenericTest<T extends Date & List> {
T x;
public void test(T y) {
System.out.println(x.toString());
}
}
}
capisco perché new GenericTest<Date>()
non si compila, è perché Data non implementa l'interfaccia List, ma se un'istanza di GenericTest gt = new GenericTest()
senza generica, l'intero il codice funziona e non capisco perché. Il test del metodo si aspetta dove T extends Date
e implementa List
, ma funziona con gt.test(new Date())
.
I limiti contano davvero quando si utilizzano i tipi non elaborati? – CKing
Sì, sono importanti. Se hai solo il valore "" (ovvero il parametro di tipo senza limiti), la sostituzione sarà 'Oggetto', tuttavia se hai' 'la sostituzione sarà' Numero'. –
Hai ragione. Il primo limite viene applicato. Ho appena provato. +1 – CKing