匹配类数组

Ric*_*lor 2 java arrays reflection equals

我正在编写一个例程来调用方法,这些方法由一个名称和一组参数Class值找到

通过getName匹配方法是有效的,但是当尝试匹配参数的给定Class []和Method.getParameterTypes()时,我遇到了麻烦.

我认为这样可行:


Class[] searchParams = new Class[] { float.class, String.class };
Class[] methodParams = m.getParameterTypes();

if(methodParams == searchParams) { m.invoke(this, paramValues); }

但显然不是 - 永远不会到达m.invoke.我已经检查了,methodParams提供了与searchParams相同的类.

下面的代码工作,并选择正确的方法,但它似乎是一种非常肮脏的做事方式,我敢肯定我错过了一些明显的东西.


Class[] searchParams = new Class[] { float.class, String.class };
Class[] methodParams = m.getParameterTypes();

boolean isMatch = true; for(int i = 0; i < searchParams.length; i++) { if(!searchParams.getClass().equals(methodParams.getClass())) { isMatch = false; } }

if(isMatch) { m.invoke(this, paramValues); }