假设我有3个类:GNP_US,GNP_China和GNP_India。我还有一个“starter”类,它检查args [0]中是否有字符串。这个字符串是“美国”,“中国”或“印度”。我如何根据字符串动态创建类的新实例? 我想也许是这样的:
public static void main(String[] args)
{
try
{
Class c=Class.forName("GNP_"+args[0]);
Object o=c.newInstance();
}
catch(Exception e){......}
}
但是因为我必须将我的对象强制转换为正确的类,所以我仍然需要使用大量的if语句来根据“country”-string来构建我的对象。当我这样做时,这给我留下了大量相同的代码行:
[...]if(args[0].equals("US")
{
GNP_US us=new GNP_US();
}
我希望你明白我要去哪里。
提前致谢!
答案 0 :(得分:1)
使用Class.newInstance创建运行时实例。
答案 1 :(得分:1)
试试这个:
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("test.Demo");
Demo demo = (Demo) clazz.newInstance();
}
答案 2 :(得分:1)
试试这个:
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
}
}
注意:如果类名不正确,则会失败。请提供类名和包层次结构。
答案 3 :(得分:1)
您可以使用Java Reflections Api。 这样的事情:
Class c = Class.forName("args[0]");
Object o = c.newInstance();