Как именно вы связываете ссылки метода для экземпляров с Java 8? Пример:Ссылка на метод Java здесь не ожидается
Collections.sort(civs,Comparator.comparing(Civilization::getStrategy.getStrategLevel));
getStrategy
из Civilization
экземпляра возвращает экземпляр объекта с Strategy
, который имеет метод экземпляра getStrategyLevel
.
Почему метод Comparator.comparing
не возвращает компаратор с его функциональным интерфейсом, реализованным с помощью выражения лямбда?
Просто используйте лямбда. –
Ссылка на метод - это ссылка на метод_. Цепочка «вызывается' getStrategy() ', а затем вызывает' getStrategyLevel() 'в результате) не является методом, поэтому он не подходит для описания с помощью ссылки на метод.Если вы хотите описать произвольный пакет императивного кода, использовать lambda; метод refs - это (надеюсь, более читаемая) стенограмма, предусмотренная для специального случая, когда тело лямбда - это единственный метод, список аргументов которого соответствует точному целевому функциональному интерфейсу. –
См. также: http: // stackoverflow.com/questions/24487805/lambda-expression-vs-method-reference/24493905 # 24493905 –