如何在Java中使用变量对象名创建对象

时间:2018-05-09 16:16:43

标签: java

如何从类创建对象,但对象名称应该是可变的并取自给定的字符串。

String objName = "customerA";
objName = new Customer("A");

然后我想使用像(例如)

这样的对象
Object obj = getObjByName("customerA"); // is it possible to retrieve an object by name?
obj..getName();  //retrieve name of the customer

2 个答案:

答案 0 :(得分:0)

您可以使用地图来实现此目的。 我可以理解,变量名取决于字符串的值,但对象类型保持不变。您可以执行以下操作:

String variableName = "name";
Map <String,Customer> customerMap = new HashMap <>();
customerMap.put (variableName,new Customer ());
Customer ref = customerMap.get (variableName);
ref.getName ();

答案 1 :(得分:0)

我会为您的客户对象创建一个Factory Class。然后,当您需要某个类型的对象时,只需传递包含所需类的String,Factory就会返回该对象。

public class CustomerFactory {

private CustomerFactory()
{
    //do nothing
}

public static Customer CreateCustomer(String customerType)
{
    if(customerType == null)
        return null;
    else if(customerType.equals("CustomerA"))
        return new CustomerA();
    else if(customerType.equals("CustomerB"))
        return new CustomerB();
    else
        return null;
}

}

只要您的客户都扩展了父Customer类,这就有效。然后你可以使用工厂根据传入的String返回你选择的类对象,如下所示

CustomerA obj1 = CustomerFactory.CreateCustomer("CustomerA");
CustomerB obj2 = CustomerFactory.CreateCustomer("CustomerB");