【发布时间】:2011-07-08 23:12:11
【问题描述】:
Class.getFields() 的 Javadoc 说:“返回的数组中的元素没有排序,也没有任何特定的顺序。”
关于实际如何确定订单的任何提示?是否有可能当我执行此方法两次时,我得到的字段顺序不同?换句话说,给定编译类的顺序是否稳定,甚至在同一源文件的编译之间是否稳定?
【问题讨论】:
-
为什么顺序对您的代码很重要?关键是,不要对排序做任何假设,因为没有任何保证。
-
不值得冒险......假设它们每次都是随机的并且防御性地编码。
-
@skaffman,你甚至不能假设它是随机的。 ;)
-
为什么我需要它?我正在调试一个序列化程序。刚刚发现它确实在获取后按名称对它们进行了排序,这让我松了一口气。
-
对不在规范中的假设进行操作是泄漏抽象的定义,这总是有风险并导致意外结果或意外工作代码。
标签: java reflection