繁体   English   中英

反射API中新类[0]的含义

[英]Meaning of new Class[0] in Reflection API

我碰到一个声明:

o1 = o1.getClass().getMethod(getter, new Class[0]).invoke(o1, new Object[0]);

有人可以告诉我在这种情况下, o1是任何Objectnew 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM