-2

Manager引数として取るクラスのコンストラクターを作成したいObject

public class Manager{
    public Manager(Object object){}
} 

String このコンストラクターでは、コンストラクターパラメーターを使用する非ローカル HashMap オブジェクトをインスタンス化したいobjectので、次のようになります。

public class Manager{
    private HashMap objects;
    public Manager(Object object){
        objects = new HashMap<String, object>(); /*note it's 'object' and not 'Object'*/
    }
}

したがって、例からマネージャーをインスタンス化すると、次のようなことができるようになります。

Manager myObjectManager = new Manager(MyObject); /* Create a new Manager instance with MyObject object for an example */
myObjectManager.getDescription(); /* Use a method from the MyObject class

私が提供した例は、Java の正しい構文を使用していないことを知っています。Java を使用して、探しているものを説明しただけです。

私が説明しようとしているのは、コンストラクターのパラメーターを使用して HashMap オブジェクトをインスタンス化できるコンストラクターが必要だということです。

編集:よりよく説明しようとします。マネージャークラスは、同じクラスのオブジェクトを保持し、文字列を使用してそれらを見つけることになっています。例として、プレーヤーのスプライトシートを見つけるために使用するスプライトシート マネージャーを使用します。

4

4 に答える 4

5

インスタンスのタイプとインスタンス自体を混同しています!

あなたが何を達成したいのか正確にはわかりませんが、おそらくジェネリックが解決策になるかもしれません:

public class Manager<T> {
    private final Map<String, T> objects;

    public Manager() {
        objects = new HashMap<String, T>();
    }
}

そして他の場所:

Manager<MyObject> myManager = new Manager<MyObject>();
于 2013-09-24T11:46:18.940 に答える
3

あなたはもうすぐそこにいます:

public class Manager<T> {

    private final Map<String, T> myMap;

    public Manager(){
        myMap = new HashMap<String, T>();
    }
} 

したがってManager、型パラメーターを使用してジェネリック クラスとして宣言すると、Tこのパラメーターを で使用できますMap。のインスタンス化Managerは次のようになります。

final Manager<MyObject> manager = new Manager<MyObject>(); 
于 2013-09-24T11:47:03.210 に答える