是否可以通过Java中的值来引用实例化对象?
Object one = new Object("A");
Object two = new Object("B");
method(Object.getByValue("A"));
根据情况,我想选择一个不同的对象。显然,所有对象都必须具有不同的值,否则无法分辨哪一个。
答案 0 :(得分:1)
我假设你的意思是你自己的班级。没有Object(String)
构造函数。
是的,但不是直接的。您需要创建一张地图。在这种情况下,我们将使用HashMap。
在MyObject
中,声明
static HashMap<String, MyObject> objects = new HashMap<>();
MyObject
的构造函数需要添加一行。修改它看起来像:
public MyObject(String stringParam);
// existing constructor logic
objects.put(stringParam, this);
}
假设stringParam
是您使用的构造函数参数。
然后您可以编写静态方法:
static MyObject getByValue(String s){ return objects.get(s); }
答案 1 :(得分:0)
有可能。
class MyObject {
private static Map<String, MyObject> map = new HashMap<>();
public static MyObject createObject(String str) {
MyObject newObj = new MyObject(str);
map.put(str, newObj);
}
public static MyObject getObject(String str) {
return map.get(str);
}
private String name;
public MyObject(String str) {
this.name = str;
}
}