我有2个班级
Test.java whith code
public class Test {
public void main (String [] args)
{
System.out.println ("Call test");
}
}
第二类:MakeCall.Java在这个类中我有String变量:
String MakeCall =“Test”;
请帮助:如何将String转换为ClassName并调用方法main,如:MakeCall.main(args)。
谢谢!
答案 0 :(得分:2)
您需要阅读Java反射:http://tutorials.jenkov.com/java-reflection/index.html
您需要的关键部分是
Class class = Class.forName("Test");
和
Method method = class.getMethod("main", String[].class);
method.invoke( null, new String[] {"arg1"} );
答案 1 :(得分:0)
首先,您必须知道包含该类的包的名称。如果您知道,可以尝试以下方法:
String className = packageName + ".Test";
Class cls = Class.forName(className);
cls.getMethod("main", String[].class).invoke(null);
请注意,如果该类在(默认)包中,那么您可以使用" Test" as className没有包名。
答案 2 :(得分:0)
替换为反射调用,您可以创建一个实例,然后像对象一样调用。例如
Class<Test> testClass = (Class<Test>) Class.forName("Test");
Test obj = testClass.newInstance();
obj.main(args);