Class.getDeclaredMethods
指出以下内容:
但是,返回数组中的元素未排序,也不按任何特定顺序进行排序。
Class.getDeclaredClasses
尚未指定有关返回数组中元素顺序的任何内容。
应该以任何特定的顺序返回元素吗?是否有一些可以定义这样的JRE实现的规范?
通常,您只能依靠语言规范中明确说明的事物。如果规格中没有明确说明某事,那么您也不能以任何特定的方式假设它会以某种方式观察到它,因为它可能会在将来没有警告而不会改变。
您可能会问,如果是这样,那么语言规范为什么对Class.getDeclaredMethods()
有任何保证是否无效?如果缺乏保证意味着"不保证",那么为什么规格不简单地对Class.getDeclaredMethods()
保持沉默?
那是因为Class.getDeclaredMethods()
过去曾以特定顺序返回元素,很多人都依靠这一点,但是该语言的创建者决定在某个时候消除这一点(我认为是Java 7,但我的记忆可能使我失望,因此他们必须明确说明他们正在将其带走。
警告说,任何超出规格所说的假设不仅是可能会使您陷入困境的事物,而且实际上是一件真实的事情,而且很可能会继续发生。放聪明点。不要遇到麻烦。