我有一个Student
类和一个StudentPool
定义如下的类:
public class Student {
public Student copy () {
return new Student();
}
}
和
public class StudentPool<T extends Student> {
public T copyStudent(T t) {
return t.copy();
}
}
因此,该copyStudent
方法无法编译,我必须使用不安全的类型转换。我不明白为什么 Java 确实认为这是非法的?
编辑: user845279、lcfseth 和 Bohemian:我认为对 Student 的以下修订可能会导致类似的情况,将父类转换为其子类,但此版本可以通过编译:
public class Student {
public <T extends Student> T copy() {
T rv = null;
return rv;
}
}
编辑:
忘记上面的代码:rv
可以null
或不安全地铸造。