0

抽象クラスAgentと、それを拡張する一連のクラス、ModAgent、ClassAgentなどがあります。

別のクラスのトロイドでは、現在Agent [] []型の多次元配列(まあ、ネストされた配列はjavaです)を保持しています。私がしたいのは、Toroidのコンストラクターで、Agentを実装する特定のタイプのオブジェクトを取得し、その特定のタイプのAgentの配列を宣言/初期化して、ClassAgentの特定のメソッドにアクセスできるようにすることです。エージェントで宣言されていません。誰かがこれについて行く方法を私に教えてもらえますか?

次に、その多次元配列の小さなセクションをリストとして返すメソッドがあります。配列と同様に、現在、戻りタイプはAgentです。アレイが保持しているエージェントタイプに固有のリターンタイプを作成する方法はありますか?

4

1 に答える 1

0

私がしたいのは、トロイドのコンストラクターでエージェントを実装する特定のタイプのオブジェクトを取り、その特定のタイプのエージェントになるように配列を宣言/初期化できるようにすることです

次のようなものを使用できます

public class Toroid <A extends Agent> {
    private final A[][] agents;

    public Toroid(Class<A> aClass) {
        Class<A[]> aClassArray = (Class<A[]>) Array.newInstance(aClass, 0).getClass();
        agents = (A[][]) Array.newInstance(aClassArray, 100);

エージェントで宣言されていない ClassAgent の特定のメソッドにアクセスできるようにします。

Aはただのエージェントだからできないこと。特定のメソッドを使用する場合は、オブジェクトをキャストする必要があります。

配列が保持しているエージェントの型に固有の戻り値の型を作成する方法はありますか?

戻ることができますA[]

于 2012-08-09T18:07:56.750 に答える