就效果来说,对于 Class
类的 getMethod
方法,这两种参数没有区别。
我们可以查看 getMethod
的源码,getMethod
层层调用之后,会使用下面的方法:
这个方法中,可以看到有一个 arrayContentsEq
方法用来匹配方法的参数:
可以发现,对于 parameterTypes 为 null
的情况,和对于 parameterTypes 为空数组(length == 0)的情况,效果是一样的 —— 假设此时我们要获取的方法 m 的参数为空,那么该方法的 m.getParameterTypes()
返回的数组(a2)的长度即为 0,我们可以发现 a1 == null
或者 a1.length == 0
的时候,arrayContentsEq
方法返回的都是 true
(即匹配成功)。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…