Invoke method with an array parameter using reflection

寵の児 提交于 2019-12-01 15:22:28
Bohemian

You have two problems:

  1. The target parameter type is String[], but you're passing in a Object[]
  2. You're passing in the whole command array as arguments, which includes the method name

The problems are all in the inner try block, so I show only that code.

String[] args = Arrays.copyOfRange(command, 1, command.length - 1);
method.invoke(null, new Object[]{args}); // must prevent expansion into varargs

Thanks to Perception for reminding me of the varargs issue

The method your trying to invoke is expecting String array, however you are passing Object array as param. Change it to String array Or you can pass any type if the method expects Object.

method.invoke(null,(Object) command );

Zim-Zam O'Pootertoot

Based on this question, it looks like the call should be

 method.invoke(null, command);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!