[英]Create new object of class at runtime depending on a string
假设我有3个班级:GNP_US,GNP_China和GNP_India。 我也有一个“入门”类,它检查args [0]中是否有字符串。 此字符串是“美国”,“中国”或“印度”。 如何根据字符串动态创建类的新实例? 我想也许是这样的:
public static void main(String[] args)
{
try
{
Class c=Class.forName("GNP_"+args[0]);
Object o=c.newInstance();
}
catch(Exception e){......}
}
但是由于必须将对象强制转换为正确的类,因此我仍然必须使用许多if语句根据“国家/地区”字符串强制转换对象。 当我这样做时,这给我留下了几乎相同的代码行:
[...]if(args[0].equals("US")
{
GNP_US us=new GNP_US();
}
希望您了解我要去的地方。
提前致谢!
使用Class.newInstance创建运行时实例。
尝试这个:
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("test.Demo");
Demo demo = (Demo) clazz.newInstance();
}
尝试这个:
public static void main(String a[]) {
String className = str[0]; // Make sure the class name is correct
Class c = null;
try {
c = Class.forName(className);
// create instance at runtime
Object o = c.newInstance();
} catch (ClassNotFoundException exception) {
// Handle
} catch (InstantiationException exception) {
// Handle
} catch (IllegalAccessException exception) {
// Handle
}
}
注意:如果类名不正确,这将失败。 请提供类名以及程序包层次结构。
您可以使用Java Reflections Api。 像这样:
Class c = Class.forName("args[0]");
Object o = c.newInstance();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.