0

構文に問題があります。私は全体を見渡していて、正しいものを見つけることができませんでした(私は実際にはわかりません、検索するフレーズは何でしょうか)。だからここに問題があります。簡単にするために、4つのクラスがあると仮定します。

クラスA:

public abstract class A{
}

クラスB:

public class B extends A{
    //some methods and fields
}

クラスC:

public class C extends A{
    //some other methods
}

クラスD:

public class D{
    protected ? value;
}

ここで問題があります。なぜなら、のサブクラスとして定義したい場合、の代わり?に何を入れるべきかわからないからです。の代わりに書くだけのオプションがあることは知っていますが、これはもっと指定できると思います。たとえば、のようになります。class D?AA?<T extends A>

これも可能ですか?

-編集-

以下の回答から、生の型を使用するというアプローチになることがわかりました。しかし、それにもかかわらず、このような構造がJavaに存在しないことを誰かが確認できますか?ジェネリック型のフィールドを作成することはできますがT(一部のクラスを拡張する)、このフィールドを含むクラスにはジェネリックパラメーターがありませんTか?

4

3 に答える 3

1

実行時にこの値タイプを指定する必要があると思います。

public class D<T extends A>{
    protected T value;
}

D<B> d =new D<B>();
D<A> d1 = new D<A>();
于 2012-11-30T10:32:46.177 に答える
1

-使用Type Parameter

例えば:

public class MyClass<T extends A>{

   T value;

}
于 2012-11-30T10:35:11.493 に答える
1

次のようにジェネリッククラスを使用します。

public class D<T extends A> {
    protected T value;
}

MyClassT上記のコメントでふりをするので、依存していません。ワイルドカードを正確に指定せずにインスタンスをインスタンス化できます。したがって、コンパイル時にT引き続き置き換えられます。この概念は次のように呼ばれます。生の型A

詳細については、http://docs.oracle.com/javase/tutorial/java/generics/rawTypes.htmlをご覧ください。

于 2012-11-30T10:46:00.463 に答える