[英]How to check if a given object is an instance of the class name given in a String?
[英]Creating an object dynamically where the class name is given as a string
我正在尝试通过将类名称作为字符串发送来动态创建类的对象。 我已经搜索了所有的java论坛,但我无法得到我想要的答案。 这是我的要求,我有一个名为Agent的课程,
package somePack;
public class Agent{
private String Id;
Private String Name;
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
package somePack;
public class Employee{
private String Id;
Private String Name;
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
public class create{
public static void main(String[] args){
newCreate("Employee");
newCreate("Agent");
}
public static void newCreate(String name){
String path="somePack."+name;
Class cls=Class.forName(path);
System.out.println("Class Name " + cls.getName());
}
}
现在我的问题是,cls.getName()给了我类名,但现在我想为该类创建对象,即分别为Employee类和Agent类,但我如何为它们创建对象? 传递的字符串可能是另一种方法中的其他东西,我如何为这种事物创建一个对象。
谁能帮我....
先感谢您,
但现在我想为该类创建对象
如果您从不需要处理带参数的构造函数,则使用Class.newInstance()
方法,否则使用Class.getConstructor(...)
或Class.getConstructors()
。 (调用Constructor.newInstance()
来调用构造函数。)
Object o = Class.forName(path).newInstance();
然后,您可以将其强制转换为代理。
Agent agent = (Agent) Class.forName(path).newInstance();
基于类具有默认构造函数(即没有参数),您可以简单地调用Class#newInstance
。
如果它有参数,它会变得有点复杂。
您必须通过Class#getConstructor
获取对相应Constructor
的引用,并传入预期的参数类类型。
完成后,可以调用Constructor#newInstance
,将相应的对象传递给它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.