gpt4 book ai didi

java - Reflection API 中 new Class[0] 的含义

转载 作者:搜寻专家 更新时间:2023-11-01 02:11:29 25 4
gpt4 key购买 nike

我遇到了一个声明:

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

谁能告诉我 new Class[0]new Object[0] 在这种情况下做了什么,其中 o1 是任意的对象?

最佳答案

getMethod() 获取参数类型列表。传递零长度数组意味着它没有参数。 invoke() 也一样。

来自 Class.getMethod 的文档:

If parameterTypes is null, it is treated as if it were an empty array.

来自 Method.invoke 的文档:

If the number of formal parameters required by the underlying method is 0, the supplied args array may be of length 0 or null.

那么,在那种情况下,您发布的行相当于:

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

我个人认为使用 null 更具可读性(尽管使用零长度数组确实有利于 self 记录程序员未传递的参数类型,如果这对你很重要的话)。

关于java - Reflection API 中 new Class[0] 的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18117623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com