次のコードを検討してください。
class ExtType extends MyType{};
class MyClass {
MyType myField;
public <T extends MyType> T foo(Class<T> clazz) {
return (T)myField;
}
}
メソッドを呼び出したいのですfoo
が、これは次の 2 つの方法で実行できます。
片道:
(new MyClass()).foo(ExtType.class);
2ウェイ:
(new MyClass()).<ExtType>foo(ExtType.class);
興味深いことに、メソッドがパラメーター化されていると宣言されていても、Eclipse は 1 回の呼び出しで警告を発行しません。
これが私の質問です。最初のコードスニペットで、T
戻り値のキャストに使用されるのはどれですか。それはT
from パラメータT
ですか、それとも戻り値ですか? 戻り値の型を (「一方向」のように) 明示的に指定しないと、警告が発行されないのはなぜですか?