MyInterface.java
publc interface MyInterface{
void print();
}
Abc.java
public Class Abc implements MyInterface{
public void print(){
System.out.print("Inside Abc");
}
}
Xyz.java
public Class Xyz implements MyInterface{
public void print(){
System.out.print("Inside Xyz");
}
}
Main.java
public Class Main{
public static void main(String arg[]){
String classPath="Abc"; // this String will get assign @ runtime.
Class<?> s = Class.forName(classPath);
}
}
这里的主方法classPath是“Abc”,所以我期待Abc实例。 classsPath 字符串将是 Abc 或 Xyz 或任何实现 MyInterface 的类名。因此,根据 classPath 字符串,我想要该类的实例。就像如果 ClassPath 是“Abc”则 Abc 类实例,ClassPath 是“Xyz”则 Xyz 类实例。 我怎样才能动态地实现这一点。
最佳答案
您需要知道要调用哪个构造函数。
假设您的所有类都有一个无参构造函数,并且您想要这样一个:
MyInterface instance = (MyInterface) s.newInstance();
如果构造函数有不同的签名,您需要提供该签名,例如使用单个字符串参数:
MyInterface instance = (MyInterface) s
.getConstructor(String.class)
.newInstance("foo");
关于java - 当类名已知时,动态检索给定类的Object类的java对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27957803/