Пожалуйста, может кто-нибудь предложить наилучшее решение следующей проблемы (это часть программы, которую я пытаюсь закодировать):
У меня есть класс Foo с переменными-членами и другой класс Bar, который расширяет Foo. Bar добавляет дополнительные переменные-члены. Объекты Bar хранятся в коллекции, и поэтому я хотел бы упорядочить эти объекты по любой из их переменных-членов.
Я рассматривал возможность использования типа enum, содержащего переменные-члены для классов, которые можно было бы передать в качестве аргумента методу compareTo(), но, поскольку перечисляемые типы являются неявно статическими, я не могу добавлять параметры для переменных-членов для Bar или любых других классов, которые могут расширяться Фу, что я хочу сравнить. Например, я хочу сравнить два класса Bar по переменной-члену myVar, которую я бы назвал как-то вроде bar1.compareTo(bar2, MyEnum.MYVAR), и классы будут сравниваться с их значениями myVar. Я думаю, что мне, возможно, просто придется создать отдельные методы для упорядочения каждой переменной-члена, но я хочу использовать compareTo(), поскольку он используется коллекциями Java для автоматической сортировки своих элементов (я считаю).
Это настолько ясно, насколько я могу описать проблему, но я, вероятно, собираюсь достичь этого совершенно неправильным путем. Любые указатели будут очень признательны.
РЕДАКТИРОВАТЬ. Это похоже на сортировку столбцов в окне проводника Windows по различным атрибутам, например, дате изменения, имени файла, размеру и т. д.
compareTo
принимает только один аргумент. Почему бы просто не переопределитьcompareTo
вBar
? - person   schedule 08.12.2012compareTo
не сортирует.compareTo
сравнивает. Используйтеsort
для сортировки. - person   schedule 08.12.2012