次のように定義された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