0

これらの反射の問題がここでよく議論されているのを見ました。残念ながら、私の問題の解決策を見つけることができませんでした:

サブクラスの多くのものを処理する1つの抽象クラスがあります

public abstract class A{
    public static <T extends A> create(){
        // some factory stuff here
    }
    public static List<....> createMore(){ /// some stuff here}
}

クラス A は、メイン プロジェクトのインクルード ライブラリにあります。ここで、A のサブクラスに A のメソッドを使用したいと思います。

 public class A1 extends A {...}

そしてそれを使用します:

   A1 mySubclass = A1.create();
   ArrayList<A1> listOfSubclass= A1.createMore();

これは何らかの方法で可能ですか?

4

1 に答える 1

1

createMore可能です:

public static <T extends A> List<T> createMore(){
    return new ArrayList<T>();
}

createあなたが返す場合にのみ(正しく)可能ですnull

public static <T extends A> T create(){
    return null;
}

入力がなければ、その関数が何を返すかを決定する方法はありません。そして、それが何であるかを知らなくても、コンパイル時に呼び出し元スコープが必要とする型と一致する必要があります。

于 2013-02-03T21:57:28.627 に答える