Java:有没有办法将文本转换为类?

Nul*_*uli 3 java reflection

我有输入:"ListClients param1 param2" 分割" ""ListClients", "param1", "param2";

我想从ListClients调用一个静态方法.

它会这样做 ListClients.someMethodThatTakesPraams(param1, param2);

有没有办法在java中做到这一点?

tem*_*def 5

确实是的!您可以使用Class.getDeclaredMethod查找Method给定名称和参数类型的对象.例如,要找到您的someMethodThatTakesParams方法,您可以编写

Method m = ListClients.class.getDeclaredMethod("someMethodThatTakesParams", ArgType1.class, ArgType2.class);
Run Code Online (Sandbox Code Playgroud)

在这里,ArgType1并且ArgType2是类型的参数.

获得方法后,可以按如下方式调用它:

m.invoke(null, arg1, arg2);
Run Code Online (Sandbox Code Playgroud)

在哪里arg1arg2你要传递的参数.请注意,第一个参数invokenull因为该方法是静态的.

这种方法省略了你必须捕获的异常以及你可能必须获得的安全权限的各种怪异,但幸运的是,这些并不难以接受.