次のコードはJDK7でjavacを使用して両方のテストメソッドをコンパイルしますが、JDK8はwillCompile
メソッドのみをコンパイルします。Java 7からJava 8へのコンパイルエラー
willNotcompile
のエラーがある: "タイプKlasa
における方法method
(Class<T>
)は引数(Class
)には適用されません。"
@Test
public void willCompile() throws InstantiationException, IllegalAccessException {
Class klass = getObject(Class.class);
method(klass);
}
@Test
public void willNotCompile() throws InstantiationException, IllegalAccessException {
method(getObject(Class.class));
}
<T> ResponseEntity<T> method (Class<T> klasa) {
return new ResponseEntity<T>(HttpStatus.OK);
}
public static <T> T getObject(Class<T> clazz) throws IllegalAccessException, InstantiationException {
return clazz.newInstance();
}
'willCompile()'はrawtypesを使用していますが、これは古いコード – Ferrybig
[未処理の型とは何ですか?](http://stackoverflow.com/questions/2770321/)でのみサポートされています。どのような - 生 - 型 - と - なぜ - 私たち - それを使用する必要があります) – Tunaki
[入れ子にされた呼び出しと生の種類のターゲットタイピング](http://stackoverflow.com/a/26285613/2711488) – Holger