如何从类创建对象,但对象名称应该是可变的并取自给定的字符串。
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
答案 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");