如何从字符串创建对象的新实例?
我想这样做:
Event event = new Event("hello");
event.setName("nice!");
但只有
String object = "Event";
String object_variable_name = "event";
String object_params = "hello";
这可能吗?
答案 0 :(得分:2)
您可以使用反射API实例化一个类。但是你需要完整的类名,简单的名称(=没有构造函数)是不够的。
Class clazz = Class.forName("com.example.Event");
Constructor constructor = clazz.getConstructor(String.class);
Object instance = constructor.newInstance("hello");
将变量分配给变量名称和类型存储在字符串中的变量是不可能的。实现这一点的通常模式是使用地图:
Map<String, Object> events = new HashMap<String, Object>();
events.put("event", event);
答案 1 :(得分:0)
你可以使用java.lang.Class的getConstructor isnstead。
答案 2 :(得分:0)
以下是获取类实例的方法(因此可以调用构造函数):How to get a Class Object from the Class Name in Java
现在,您可以通过Beans API获取属性name
的getter。请参阅此问题:Java Reflection: Instantiate a new object with specified type
或者您可以使用reflectasm或reflections或commons-beanutils让您的生活更加简单