2016-08-19 7 views
0

я написал следующую строку кода для Java 8 проекта:Компаратор: ссылки на методы не поддерживаются на этом языке?

Comparator<Person> oldestPerson= Comparator.comparing(Person::getOldestBirthday); 

Это простой компаратор, однако я пытаюсь использовать этот код в проекте, который использует только Java 7, поэтому дает эту ошибку:

"Method references are not supported at this language level" 

Я понимаю, что я получаю сообщение об ошибке, поскольку я не использую Java 8. Есть ли простой способ переписать логику без использования ссылки на метод?

+0

Зависит от того, что вы подразумеваете под «простой». Это много шаблонов, и именно поэтому это было разработано. – chrylis

+0

Можете ли вы привести пример того, как это будет сделано? Или ссылку? – java123999

ответ

4
Comparator<Person> comparator = new Comparator<Person>() { 
    @Override 
    public int compare(Person p1, Person p2) { 
     return p1.getOldestBirthday().compareTo(p2.getOldestBirthday()); 
    } 
}; 

Это, вероятно, самый простой способ сделать это в Java 7

+0

ОК, так что же есть несколько человек, которых нужно сравнивать? Вместо 2 (то есть p1 и p2)? – java123999

+0

Компараторы в основном определяют, как должны упорядочиваться объекты того же типа. если вы хотите применить его к набору людей, например. Список personList, вы можете заказать их с помощью компаратора: Collections.sort (personList, компаратор). –

+0

Я имею в виду способ сортировки по нескольким предложениям, то есть похожим на метод .thenComparing() в Java 8? – java123999

 Смежные вопросы

  • Нет связанных вопросов^_^