这是一个关于Java如何在内部进行反射的问题。
我有一个抽象类说
SuperClass
和两个来自 SuperClass 的 chlid 类,
ChildClass1和ChildClass2。
SuperClass定义了一个访问器方法getValue(),尽管它没有定义属性值。
ChildClass1并ChildClass2覆盖该方法getValue()并为该方法添加一个注释@MyAnnotation,@MyAnnotation保留在运行时(它是OneToOne注释)。
在我的程序中,我有一个实例ChildClas1和一个ChildClass2. 我使用反射从两个对象中获取所有方法。
正如预期的那样,我getValue()在结果数组中得到了两种方法,(一种用于 the SuperClass,一种用于ChildClass)。
对于已标记为访问器ChildClass1的getValue()方法的实例@MyAnnotation(methodAccessor 属性!= null),但对于ChildClass2标记为访问器的方法的实例没有注释(是getValue()父类的方法)。
我不明白为什么,最终我改变了声明方法的顺序ChildClass2(有更多的方法,而不仅仅是访问器),即我把所有的 getter 和 setter 都放在了 begginging 并且ChildClass2表现得像ChildClass1.
我的问题是,Java 如何将方法限定为反射中的访问器,并且声明方法的顺序是否会改变反射的行为?