2015-12-28 2 views
3

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

enter image description here

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

enter image description here

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

+2

Идея не имеет. Вероятно, ошибка в Eclipse. Но я могу сказать, что вы могли бы использовать 'Comparator.comparing (Person :: getAge)', а не '(Person a, Person b) -> a.age.compareTo (b.age)' –

+0

Да, я забыл упомянуть, что я просто гулял с лямбдами и испытывал разные варианты, но спасибо. – breakline

ответ

0

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

Применяемые эвристики постоянно совершенствуются. Я рекомендую попробовать свои примеры на recent milestone build. Если проблема все еще существует, вы можете помочь команде на filing a bug, предоставляя пример кода и описывая ваши ожидания и какое фактическое поведение вы наблюдаете.

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