我有输入:"ListClients param1 param2"
由 ""
拆分为 "ListClients", "param1", "param2";
我想从 ListClients 调用一个静态方法。
所以它会做 ListClients.someMethodThatTakesPraams(param1, param2);
有没有办法在 java 中做到这一点?
最佳答案
确实如此!您可以使用 Class.getDeclaredMethod
查找给定名称和参数类型的 Method
对象。例如,要找到您的 someMethodThatTakesParams
方法,您可以编写
Method m = ListClients.class.getDeclaredMethod("someMethodThatTakesParams", ArgType1.class, ArgType2.class);
这里,ArgType1
和ArgType2
是参数的类型。
获得方法后,您可以按如下方式调用它:
m.invoke(null, arg1, arg2);
其中arg1
和arg2
是你要传递的参数。请注意,invoke
的第一个参数是 null
,因为该方法是静态的。
这种方法省略了所有奇怪的事情,包括您必须捕获的异常和您可能必须获得的安全权限,但幸运的是,这些并不难掌握。
关于Java:有没有办法将文本转换为类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4730009/