我想从控制台读取一个函数的名字,然后在该类中调用它。 因此,我希望它自动发生,而不是检查它使用“IF”语句的功能。
Exmp.
_ (CONSOLE)
BuildDatabase (WRITTEN IN CONSOLE)
---> What happens in class : Class.BuildDataBase();
可以吗? 另一个问题 - 如何从命令行运行我的类'main?
提前致谢
答案 0 :(得分:1)
您可以使用反射:
Method method = YourClass.getMethod(nameReadFromConsole); //no parameters
method.invoke(null); // invoking without a target object - i.e. static
从控制台运行是通过java
command - java ClassName
答案 1 :(得分:0)
当你说命令行时你的意思是终端? 如果你想在类中运行main方法,你可以调用它:
java MyClass
但必须是编译文件(.class)
答案 2 :(得分:0)
或者您可以为您的控制台编写自定义阅读器(此代码需要清理/重构):
public static void main(String[] args) {
MyClass instance = new MyClass();
while(true) {
System.out.print("> ");
String input = new BufferedReader(new InputStreamReader(System.in)).readLine();
Method method = MyClass.getDeclaredMethod(input);
Object returnValue = method.invoke(instance);
System.out.println(returnValue);
}
}