-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 回答
1

相反,您可以使用泛型来解决它:

class Manager<T> {
    HashMap<String, T> map = new HashMap<String, T>();;
    public Manager(T object) {
        map.put("something", object); 
    }
}
于 2013-09-24T12:00:23.133 回答
0

在 HashMap 声明之类的。

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

在 Java 中是不可能的。因为,对象应该只是非原始类型,而不是对象的任何引用。

于 2013-09-24T11:43:25.750 回答