我有一个实例。基本结构是;
class Instance{
public void load(){
...
}
public boolean execute(){
...
return true;
}
}
通常我们可以在static void main(String args[])
中执行此实例,但我们如何执行此实例 - > load()
- >来自终端或编译文件execute()
的{{1}}在.class
方法中被调用,而不是使用反射来执行已定义的方法。
因为这个实例就像一个项目上的脚本,但我们没有将main函数定义为类。
有人帮忙吗?
答案 0 :(得分:1)
我建议您只需添加一个public static void main(String args[])
来调用load()
和execute()
,这样就可以通过常规方式从命令行执行您的类。通过构建一个只需要自己的public static void main(String args[])
的基于反射的包装器,使问题过于复杂没有什么意义。
答案 1 :(得分:1)
我们如何执行此实例 - > load() - >从终端执行()
你不能。
它可能是implemented in Java 9,但目前还没有正式的方法从命令行运行方法。
或编译文件.class在main方法中调用而不是使用反射
如你所说,使用反射:
File pathToClass = new File("C:\\Some Folder\\");
Class<?> loaded = null;
try {
ClassLoader loader = new URLClassLoader(new URL[] {pathToClass.toURL()});
loaded = loader.loadClass("some.package.foo.Instance");
} catch(Exception e) {
//do something
}
Object i = loaded.newInstance();
Method method = loaded.getMethod("execute");
Boolean returnValue = (Boolean) method.invoke(i);
我建议不要这样做 - 通常有一种更好的方法,它只是使一切都过于复杂。