'class.getDeclaredClasses()返回的数组中的元素是否有任何特定顺序



Class.getDeclaredMethods指出以下内容:

返回数组中的元素未排序,也不按任何特定顺序进行排序。

但是,

Class.getDeclaredClasses尚未指定有关返回数组中元素顺序的任何内容。

应该以任何特定的顺序返回元素吗?是否有一些可以定义这样的JRE实现的规范?

通常,您只能依靠语言规范中明确说明的事物。如果规格中没有明确说明某事,那么您也不能以任何特定的方式假设它会以某种方式观察到它,因为它可能会在将来没有警告而不会改变。

您可能会问,如果是这样,那么语言规范为什么对Class.getDeclaredMethods()有任何保证是否无效?如果缺乏保证意味着"不保证",那么为什么规格不简单地对Class.getDeclaredMethods()保持沉默?

那是因为Class.getDeclaredMethods()过去曾以特定顺序返回元素,很多人都依靠这一点,但是该语言的创建者决定在某个时候消除这一点(我认为是Java 7,但我的记忆可能使我失望,因此他们必须明确说明他们正在将其带走。

警告说,任何超出规格所说的假设不仅是可能会使您陷入困境的事物,而且实际上是一件真实的事情,而且很可能会继续发生。放聪明点。不要遇到麻烦。

最新更新