gpt4 book ai didi

java - 获取类的方法

转载 作者:行者123 更新时间:2023-12-01 12:40:27 27 4
gpt4 key购买 nike

当使用反射获取某些具体类的方法时 - 即使我没有显式定义该类的任何方法 - 默认父类(super class)(对象)方法(wait、equals、toString 等)都会被返回,而其他方法则返回否则只能通过反射访问(getSimpleName、isAnnotation、isSynthetic 等)。

这是为什么?

只能通过反射访问的方法是从输出中任意解析的还是幕后发生了更有趣的事情?

如何将这一原则应用到我自己的具体类中,以便 getMethods() 只返回我在类中显式定义的方法(或任意选择,但这似乎非常先进),而不返回从 Class 继承的默认方法?

最佳答案

没有。所有引用类型的父类(super class)是Object。方法 wait(..)equals(..)toString() 在那里定义,这些就是您获得的。

您列出的其他方法来自类 Class,它是所有反射操作的入口点。

How can I apply this principle to my own concrete class so that getMethods() only returns the methods I explicitly define in my class (or arbitrarily choose, but that seems extremely advanced) and not the default methods which are inherited from Class?

您不能使用getMethods()。但你可以使用getDeclaredMethods()仅获取与调用它的 Class 对象对应的类中声明的那些方法。

Returns an array containing Method objects reflecting all the declared methods of the class or interface represented by this Class object, including public, protected, default (package) access, and private methods, but excluding inherited methods.

关于java - 获取类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25151678/

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