按属性获取实例化对象

时间:2014-04-19 18:55:59

标签: java oop object

是否可以通过Java中的值来引用实例化对象?

    Object one = new Object("A");
    Object two = new Object("B");

    method(Object.getByValue("A"));

根据情况,我想选择一个不同的对象。显然,所有对象都必须具有不同的值,否则无法分辨哪一个。

2 个答案:

答案 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;
    }
}