[英]Meaning of new Class[0] in Reflection API
我碰到一个声明:
o1 = o1.getClass().getMethod(getter, new Class[0]).invoke(o1, new Object[0]);
有人可以告诉我在这种情况下, o1
是任何Object
, new Class[0]
和new Object[0]
做什么?
getMethod()接受参数类型的列表。 传递零长度的数组意味着它没有参数。 与invoke()相同。
从Class.getMethod
的文档中:
如果parameterTypes为null,则将其视为空数组。
从Method.invoke
的文档中:
如果基础方法所需的形式参数数量为0,则提供的args数组的长度可以为0或为null。
那么,在这种情况下,您发布的行等效于:
o1 = o1.getClass().getMethod(getter, null).invoke(o1, null);
就我个人而言,我发现使用null
更具可读性(尽管使用零长度数组确实具有自我记录程序员没有传递的参数类型的好处,如果这对您来说意义重大)。
o1.getClass().getMethod(getter, new Class[0])
这意味着它告诉Class#getMethod查找没有参数的名为getter
的方法。
与...相同
o1.getClass().getMethod(getter, null)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.