ん:ジェネリック型パラメータはエラーを与えるが、ワイルドカードタイプのパラメータは、次のタイプは、任意のコンパイラの警告を生成しませんしませ
public abstract <T extends BaseType> Class<T> getSubclassType();
@Override
public <T extends BaseType> Class<T> getSubclassType() {
return (Class<T>) SubType.class;
}
:
public abstract Class<? extends BaseType> getSubclassType();
@Override
public Class<SubType> getSubclassType() {
return SubType.class;
}
以下の具体的な方法は、未チェックのキャストコンパイラの警告を生成しますコンパイラーの警告を生成せずに、サブクラスに適切な具体的な型を返す(基本クラスの)汎用型パラメーターでメソッドを定義する方法はありますか?明らかに、私が上で与えた両方の例はうまくいくでしょう、私はメソッドを定義するより正確な方法があるかどうかを知りたいだけです。注:私は、私は次の操作を行うことができることを知っていますか:
public abstract class BaseClass <T extends BaseType>
public abstract Class<T> getSubclassType();
ジェネリック型を持つメソッドヘッダ自体を、定義する方法があるかどうか、私はクラスでそれを定義せず、疑問に思って。また、なぜワイルドカード宣言に警告と警告が与えられていないのですが、「同等の」総称宣言がなぜ好奇心が強いのですか?
は、 'SubType.class'必ずしもタイプ'クラス 'のです。しかし、一般的な方法では、 'SubType.class'が本当に' BaseType'を拡張して警告を出すかどうか暗黙的に知る方法はありません。それを避ける方法については、私は考えることができません。 –
Mat