这是一个奇怪的行为getDeclaredMethods
,这里是场景,一个名为Entity的类:
public class Entity {
private Object reference;
/**
* @return the reference
*/
public Object getReference() {
return reference;
}
/**
* @param reference the reference to set
*/
public void setReference(Object reference) {
this.reference = reference;
}
public Object getReference2() {
return reference;
}
public void setReference2(Object reference) {
this.reference = reference;
}
}
Run Code Online (Sandbox Code Playgroud)
而主要课程:
public static void main(String Args[]){
try {
Entity _entity = new Entity();
Class _newClass = _entity.getClass();
Method[] _method = _newClass.getDeclaredMethods();
for (int i = 0; i < _method.length; i++) {
System.out.println(_method[i]);
}
} catch (IllegalArgumentException | SecurityException ex) {
Logger.getLogger(MainApp.class.getName()).log(Level.SEVERE, null, ex);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
public java.lang.Object Entities.Entity.getReference()
public void Entities.Entity.setReference(java.lang.Object)
public java.lang.Object Entities.Entity.getReference2()
public void Entities.Entity.setReference2(java.lang.Object)
Run Code Online (Sandbox Code Playgroud)
好吧,他们是有序的,没关系,但是这会发生在你将setRefference设置为某个东西_entity.setReference(100);
时输出:
public void Entities.Entity.setReference(java.lang.Object)
public java.lang.Object Entities.Entity.getReference()
public java.lang.Object Entities.Entity.getReference2()
public void Entities.Entity.setReference2(java.lang.Object)
Run Code Online (Sandbox Code Playgroud)
所以...为什么setReference
要放在第一位?也许是因为它有价值?无论我设置哪个字段,如何保持声明的顺序,就像它在类文件中一样?