У меня есть этот код:
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());
}
}
}
Я понимаю, почему new GenericTest<Date>()
не компилируется, потому что Date не реализует интерфейс List, но если я создаю экземпляр GenericTest gt = new GenericTest()
без generic, весь код работает, и я не понимаю, почему. Тест метода ожидает (T y)
где T extends Date
и реализует List
, но он работает с gt.test(new Date())
.