У меня есть следующий код, который не будет компилироваться, и хотя есть способ его компиляции, я хочу понять, почему он не компилируется. Может кто-нибудь просветить меня конкретно, почему я получаю сообщение об ошибке, которое я отправлю в конце, пожалуйста?
public class Test {
public static void main(String args[]) {
Test t = new Test();
t.testT(null);
}
public <T extends Test> void testT(Class<T> type) {
Class<T> testType = type == null ? Test.class : type; //Error here
System.out.println(testType);
}
}
Type mismatch: cannot convert from Class<capture#1-of ? extends Test> to Class<T>
Отбрасывая Test.class
в Class<T>
, он компилируется с предупреждением Unchecked cast
и отлично работает.