我碰到一个声明:

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

有人可以告诉我在这种情况下new Class[0]是任何new Object[0]o1Object做什么吗?

最佳答案

getMethod()接受参数类型的列表。传递零长度的数组意味着它没有参数。与invoke()相同。

Class.getMethod 的文档中:



Method.invoke 的文档中:



那么,在这种情况下,您发布的行等效于:

o1 = o1.getClass().getMethod(getter, null).invoke(o1, null);

我个人认为null的使用更具可读性(尽管使用零长度数组确实可以自我记录程序员没有传递的参数类型的好处,如果这对您来说意义重大)。

10-08 09:16
查看更多