1

私は大量のオブジェクトを ArrayList に追加し、後で特定の関数を呼び出す必要があるプロジェクトに取り組んでいます。この部分はダウンしていますが、私のプログラムでは、探しているクラスのパラメーターのみを使用して、ArrayList から特定のインスタンスにアクセスする必要があります。例えば:

public class Manager {
    public static ArrayList<O> loadedHacks = new ArrayList<O>();
    public void initOs(){
        loadedHacks.add(new O());
    }
}

public class O {
    public boolean enabled = false;
    public void onEnable(){}
}

public class A extends O{
}

その後、次のようなことをしたいと思います。

if(Helper.get(A.class).enabled){}
4

2 に答える 2

2

あなたの質問からは、あなたが解決しようとしている実際の問題が何であるかが明確ではありませんが、私が正しく理解していれば、あなたがしようとしていることは、「オブジェクト X はクラス A のサブクラスである可能性があります。サブクラス B の場合は、A で定義されていない B.method() を呼び出します。

その場合、次のようなことができます:

if (object instanceof SpecificSubclass) {
  SpecificSubclass specificObject = (SpecificSubclass) object;
  specificObject.specificMethod();
}

編集:あなたのコメントから、あなたが探している機能が少し違うようです。パラメータとして Class がある場合、特定のオブジェクトが実際にそのクラスのインスタンスであるかどうかを確認するには、Class.isAssignableFrom() メソッドを使用します。

于 2012-06-14T04:14:14.580 に答える
1

私が正しく理解している場合は、ArrayListを繰り返し処理し、Classオブジェクトとして持っているパラメータを配列内のgetClass()の戻り型と比較して、オブジェクトを取得して返す必要があります。getClass()メソッドは、参照ではなく、オブジェクトのクラスタイプを返すためです。

于 2012-06-14T04:19:50.690 に答える