我碰到一个声明:
o1 = o1.getClass().getMethod(getter, new Class[0]).invoke(o1, new Object[0]);
有人可以告诉我在这种情况下
new Class[0]
是任何new Object[0]
的o1
和Object
做什么吗? 最佳答案
getMethod()接受参数类型的列表。传递零长度的数组意味着它没有参数。与invoke()相同。
从 Class.getMethod
的文档中:
从 Method.invoke
的文档中:
那么,在这种情况下,您发布的行等效于:
o1 = o1.getClass().getMethod(getter, null).invoke(o1, null);
我个人认为
null
的使用更具可读性(尽管使用零长度数组确实可以自我记录程序员没有传递的参数类型的好处,如果这对您来说意义重大)。