Может быть, глупый вопрос, но ... From the docs, я знаю, что в java у меня есть этот метод под названием getFields()
на java.lang.Class<T>
, который вернет массив объектов Field
, и я также знаю, что результаты не отсортированы каким-либо образом вообще.Можно ли получить поля классов отсортированным способом?
Возвращает массив, содержащий объекты Field, отражающие все доступные открытые поля класса или интерфейса, представленного данным объектом класса. Элементы возвращаемого массива не сортируются, а не указаны в определенном порядке. Этот метод возвращает массив length 0, если класс или интерфейс не имеет доступных общедоступных полей, или , если он представляет класс массива, примитивный тип или void.
Теперь, если бы я хотел, чтобы эти поля были отсортированы? Есть ли способ, который вернет их мне? Или мне нужно самому разобраться?
От this question Я знаю, что могу сортировать их, используя Comparator
. Я просто хочу знать, действительно ли мне нужно сделать этот дополнительный шаг.
В стандартном JDK нет никакого метода, который будет делать то, что вы хотите, поэтому, если вы ограничены только JDK, вам нужно сделать этот дополнительный шаг. На данный момент я нашел что-то вроде http://stackoverflow.com/a/15075633/1393766, если вас интересуют внешние библиотеки. – Pshemo
Какую общую форму решения вы бы искали, которая сортирует их, не сортируя их? Я не пытаюсь быть легкомысленным, но если они не отсортированы, и вы хотите, чтобы они отсортировались ... вам нужно их отсортировать. Тем не менее, если вы просто не хотите писать Компаратор, вы можете захотеть взглянуть на [Ordering.usingToString()] Guava (http://docs.guava-libraries.googlecode.com/git/javadoc/com/ Google/общие/собирать/Ordering.html # usingToString()). – yshavit
«если вы просто не хотите писать Компаратор» Что-то вроде этого ха-ха. Мне было любопытно, чем лениться. Кроме того, хорошее решение от Guava. – Mauker