首页 新闻 会员 周边

使用Class#getDeclaredFields()方法返回的字段数组有没有默认顺序?

0
悬赏园豆:20 [待解决问题]

API对该方法的描述如下:

getDeclaredFields

public Field[] getDeclaredFields()
                          throws SecurityException
返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何字段,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。 
-----------------
我试了几次这个方法,数组元素的顺序是类中声明字段的顺序(默认顺序么?默认按类声明字段的顺序?),而API 对这个方法的描述却是"没有特定的顺序",这里的"没有特定的顺序"会在什么情况的发生?
shenshenxuezi的主页 shenshenxuezi | 初学一级 | 园豆:83
提问于:2017-01-31 14:09
< >
分享
所有回答(1)
0

不得不说你研究真细致,这里的"没有特定的顺序"会在什么情况的发生?

应该是有两种可能无序情况:

1。是编译成字节码的时候

2。加载到内存中,和从字节码对象中取出这些字段

编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行。

假程序猿 | 园豆:226 (菜鸟二级) | 2017-02-01 00:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册