但是,返回数组中的元素没有排序,也没有任何特定的顺序。
Class.getDeclaredClasses
没有指定返回数组中元素顺序的任何内容。
它应该以任何特定顺序返回元素吗?是否有一些JRE实现规范可以定义这样的?
答案 0 :(得分:3)
通常,您只能依赖语言规范中明确声明的内容。如果规范中没有明确说明某些内容,即使您以某种方式观察它,也不能假设它会以任何特定的方式出现,因为它可能会在未来发出警告而改变。
您可能会问,如果是这种情况,那么为什么语言规范明确废除了对Class.getDeclaredMethods()
的任何保证?如果没有担保意味着“无保证”,那么为什么规范不会对Class.getDeclaredMethods()
保持沉默?
那是因为Class.getDeclaredMethods()
曾经以特定的顺序返回元素,很多人都依赖于此,但是语言的创造者决定在某些时候废除它,(我认为是Java 7,但我的记忆可能会让我失望,所以他们必须明确说明他们正在把它拿走。
这是一个警告,任何超出规范所述的假设不仅仅是假设会让你陷入麻烦的事情,它是一个真实的事情,实际上已经发生并且很可能会继续发生。放聪明点。不要遇到麻烦。