我的接口.java
publc interface MyInterface{
void print();
}
.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");
}
}
主.java
public Class Main{
public static void main(String arg[]){
String classPath="Abc"; // this String will get assign @ runtime.
Class<?> s = Class.forName(classPath);
}
}
这里的main方法类路径是“”,所以我需要示例。classspath字符串将是或xyz或实现myinterface的任何类名。因此,根据classpath字符串,我需要该类的示例。例如,如果classpath是“”,那么类示例,classpath是“xyz”,那么xyz类示例。如何动态地实现这一点。
4条答案
按热度按时间s71maibg1#
类的newinstance方法用于创建新示例。
x9ybnkn62#
您可以在运行时使用类名动态创建对象,输入为简单字符串。这是使用java语言中称为反射的一部分来完成的。反射允许旧代码调用新代码,而不需要重新编译。如果类具有无参数构造函数,则通常使用以下方法从其包限定类名(例如,“java.lang.integer”)创建对象:
class.forname class.newinstance如果需要将参数传递给构造函数,则可以使用以下替代方法:
反射最常用的用法是示例化一个类,该类的泛型类型在设计时已知,但其特定的实现类在设计时未知。有关示例,请参见插件主题。反射的其他用法相当少见,而且大多出现在专用程序中。
7cjasjjr3#
你需要知道调用什么构造函数。
假设您的所有类都有一个无参数构造函数,并且您需要该构造函数:
如果构造函数具有不同的签名,则需要提供该签名,例如使用单个字符串参数:
ubby3x7f4#
我在你的帖子里看到了一些拼写错误,所以让我们先来纠正一下。
public
以及class
喜欢然后你用
Class.newInstance()
创建Object
,检查它是否为预期的类型instanceof
然后像