2014-08-28 3 views
1

intellij가 항상 람다를 특정 방식으로 선언하게 할 수 있습니까? 매개 변수 인덱스 블록하지만 괄호를 사용하여Java 8 람다 기본값에 대한 Intellij 구성

method(length, index -> { return null; }) 

:

는 예를 들어, 언젠가 인 IntelliJ는에 람다를 리팩토링합니다. 시간에 맞추기가 어렵습니다.

나는 항상 대신이 구문을 사용하고 싶습니다 : 그것은 방법의 기준, 즉, OBJ :: 방법이 아닌

항상
method(length, (index) -> { return null; }) 

method(length, (Integer index) -> { return null; }) 

그리고는, 블록을 사용합니다.

이 작업을 수행 할 수 있습니까?

답변

1

IntelliJ 13에서는 가능하지 않지만 (14 인치에서 가능할 수 있습니다). 물론 해결 방법은 리팩토링 옵션입니다 (Ctrl + 입력) "람다 표현 본문을 {...}"로 확장하십시오.

원하는 것은 "리팩터링하기가 더 쉽기 때문에 모든 익명 클래스를 개인 정적 내부 클래스로 만들고 싶습니다."라고 말하면됩니다. 사실, 당신은 이 필요하지 않습니다. 모든 추가 구문은입니다. 그렇게하면 IDE 리펙토링 도구가 도움이됩니다.

+0

예, "항상 람다 표현 본문을 {}"로 확장 할 수 있습니다 ... 제안한대로 리팩토링 옵션이 있지만 두 단계 만 남았습니다. 첫 번째 yoy는 내부 클래스, 새로운 Runnable() {}을 만들고 람다에 리팩터링 한 다음 확장해야합니다. 나는 새로운 Runnable() {}을 람다로 만드는 것이 너무 멀다는 것을 알았지 만 intellij가 그 방법으로 람다를 생성하는 것이 더 쉽다. 적어도 내 지식이 아니라면 새로운 타이핑을 시작하지 않으면 도움이되지 않습니다. – momomo

+1

@SecretService 불행히도, lambdas의 코드 완성 및 포맷 옵션은 IntelliJ 13에서 비참하게 부적절합니다. 향후 버전에서 개선 될 예정입니다. – kuporific

관련 문제