我想为一个名为Manager
的类创建一个构造函数,该类将Object
作为参数:
public class Manager{
public Manager(Object object){}
}
在这个构造函数中,我想实例化一个使用String
和构造函数参数object
的非本地HashMap对象,所以它会是这样的:
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对象的构造函数。
编辑:我会尝试更好地解释,管理器类应该保存来自同一个类的对象并使用该字符串来查找它们。例如,我将使用spritesheet管理器,我将用它来查找播放器的spritesheet。
答案 0 :(得分:5)
您正在混淆实例的类型和实例本身!
我不确定你想要实现什么,但也许泛型可能是一个解决方案:
public class Manager<T> {
private final Map<String, T> objects;
public Manager() {
objects = new HashMap<String, T>();
}
}
以及其他地方:
Manager<MyObject> myManager = new Manager<MyObject>();
答案 1 :(得分: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>();
答案 2 :(得分:1)
相反,你可以使用泛型来解决它:
class Manager<T> {
HashMap<String, T> map = new HashMap<String, T>();;
public Manager(T object) {
map.put("something", object);
}
}
答案 3 :(得分:0)
在HashMap声明中,如。
public Manager(Object object){
objects = new HashMap<String, object>();
}
Java中不可能。 Becasue,对象应该只是非原始类型,而不是任何对象的引用。