API对该方法的描述如下:
getDeclaredFields
public Field[] getDeclaredFields() throws SecurityException
Field
对象的一个数组,这些对象反映此 Class
对象所表示的类或接口所声明的所有字段。包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何字段,或者此 Class
对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。 不得不说你研究真细致,这里的"没有特定的顺序"会在什么情况的发生?
应该是有两种可能无序情况:
1。是编译成字节码的时候
2。加载到内存中,和从字节码对象中取出这些字段
编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行。