Шаблоны Eclipse, lambdas и Java 8

Есть ли причина, по которой помощники по содержанию Eclipse не работают в/вокруг лямбда-выражений? В обычном случае Eclipse обычно делает это после написания точки:

введите здесь описание изображения

Который работает так же хорошо, как и везде. Однако всего через пару строк я ничего не получаю:

введите здесь описание изображения

Оба объекта относятся к одному типу. К сожалению, я использую их все время, так как они делают все намного быстрее, и я не понимаю, почему это работает в одной лямбде, а не в другой.


person breakline    schedule 28.12.2015    source источник
comment
Без понятия. Вероятно, ошибка в Eclipse. Но я могу сказать, что вы могли бы использовать Comparator.comparing(Person::getAge), а не (Person a, Person b) -> a.age.compareTo(b.age)   -  person JB Nizet    schedule 28.12.2015
comment
да, я забыл упомянуть, что просто баловался с лямбда-выражениями и пробовал разные варианты, но спасибо.   -  person breakline    schedule 28.12.2015


Ответы (1)


Попытка объяснить (вы спросили причину): синтаксический анализ лямбда-выражений в Java является технической проблемой, поскольку грамматика Java не предназначена для генераторов синтаксических анализаторов. Завершение кода, OTOH, неизбежно зависит от синтаксического анализа неполного кода, т. е. для продолжения синтаксического анализа после синтаксической ошибки необходимо использовать эвристику. Эти двое просто не очень хорошо сотрудничают. В результате в некоторых ситуациях ваш неполный код будет выглядеть для компилятора мусором, и, следовательно, помощник по работе с контентом не сможет понять, какие предложения могут быть значимыми.

Прикладные эвристики постоянно совершенствуются. Я рекомендую попробовать ваши примеры на последней промежуточной сборке. Если проблема все еще существует, вы можете помочь команде, сообщив об ошибке предоставление примера кода и описание ваших ожиданий и фактического поведения, которое вы наблюдаете.

person Stephan Herrmann    schedule 05.01.2016