Java 通过指定的对象实例化hashmap

Java 通过指定的对象实例化hashmap,java,object,hashmap,Java,Object,Hashmap,我想为一个名为Manager的类创建一个构造函数,该类以Object为参数: public class Manager{ public Manager(Object object){} } 在这个构造函数中,我想实例化一个非本地HashMap对象,它使用String和构造函数参数object,所以它是这样的: public class Manager{ private HashMap objects; public Manager(Object object){

我想为一个名为
Manager
的类创建一个构造函数,该类以
Object
为参数:

public class Manager{
    public Manager(Object object){}
} 
在这个构造函数中,我想实例化一个非本地HashMap对象,它使用
String
和构造函数参数
object
,所以它是这样的:

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

我知道我提供的示例没有使用正确的java语法,我只是用java来描述我要找的东西

我只是想解释一下,我想要一个构造函数,它可以通过使用构造函数参数来实例化HashMap对象


编辑:我将尝试更好地解释,manager类应该保存来自同一类的对象,并使用字符串查找它们。例如,我将使用一个精灵表管理器来查找播放器的精灵表。

在HashMap声明中,如

public Manager(Object object){
        objects = new HashMap<String, object>();
}
公共管理器(对象){
objects=newhashmap();
}

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

您将实例的类型和实例本身混为一谈

我不确定您到底想要实现什么,但泛型可能是一种解决方案:

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

    public Manager() {
        objects = new HashMap<String, T>();
    }
}
公共类管理器{
私有最终地图对象;
公共经理(){
objects=newhashmap();
}
}
在其他地方:

Manager<MyObject> myManager = new Manager<MyObject>();
Manager myManager=new Manager();
您就快到了:

public class Manager<T> {

    private final Map<String, T> myMap;

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

相反,您可以使用泛型来解决它,如下所示:

class Manager<T> {
    HashMap<String, T> map = new HashMap<String, T>();;
    public Manager(T object) {
        map.put("something", object); 
    }
}
类管理器{
HashMap=新的HashMap();;
公共经理(T对象){
地图。放置(“某物”,物体);
}
}

在地图中用作键的
字符串是什么?它只是一个id,因此您可以通过其名称访问对象。什么是
MyObject
?您可以在构造函数中传递哪些其他对象?这些对象之间是否存在层次关系?“new HashMap();”对象需要是一个类型。将一个具体对象放入类型定义中。我建议给你一个更好的例子来说明你想实现什么。@Timo我想实现一个hashmap,我可以通过构造函数来选择它的类型。“我知道我提供的例子没有使用正确的java语法,我只是用java来描述我要找的东西。”
final Manager<MyObject> manager = new Manager<MyObject>(); 
class Manager<T> {
    HashMap<String, T> map = new HashMap<String, T>();;
    public Manager(T object) {
        map.put("something", object); 
    }
}