2017-05-10 18 views
2

Java 8 기능 인터페이스를 많이 사용하고 있습니다.Eclipse의 기능 인터페이스에서 예상대로 올바른 서명으로 메소드 생성

특히, 특정 서명으로 함수를 등록하는 몇 가지 방법이 있습니다. 다음과 같이 그것의 서명은 다음과 같습니다

<A extends IA, D extends IB, B extends IB> void registerRConv(Class<A> tA, Class<D> tD, Class<B> tB, 
     BiFunction<A, D, B> ad2b); 

(!) 참고 : 경우에 당신이, 유형 변환되어 등록의 컨버터 레지스트리를 궁금해 할, 실제 convertig

을 수행하는 기능 나는 꽤 자주이 방법을 사용하고 매번 나는 나 자신

registry.registerRConv(Common.Choice.class, Choice.class, Object.class, Converter::getChoice) 
주어진 클래스의 모든 존재

하지만, 정적 메소드 입력 찾을 - 예에서 Converter::getChoice을 - 아직 존재하지 않습니다.

IntelliJ IDE에서이 작업을 수행 할 때 Alt + Enter를 누르면 예상되는 서명으로 현재 클래스에서 해당 메서드가 자동으로 생성되는 옵션이 나타납니다.

Eclipse를 이렇게 만들 수 있습니까? 그렇다면 어떻게?

+0

Eclipse에이 기능이 일부 있다고 가정 해보십시오. –

+0

잠시 동안 Eclipse를 사용하지 않았지만 'Ctrl + 1'을 누르면 상황에 맞는 옵션이있는 메뉴가 나타났습니다. 누락 된 메서드를 만드는 옵션은 최상위 메서드 중 하나였습니다. –

+0

어떤 Eclipse 버전을 사용하십니까? – fireandfuel

답변

1

이 변경 내용은 Ctrl+1을 눌러 호출되는 "빠른 수정"에 의해 제공됩니다.

해결 방법 오류가 메서드 참조 식에 대해보고되면 기존의 빠른 수정이 제공되지 않습니다.

나는 이것을 처리하기 위해 https://bugs.eclipse.org/516504을 제출했다.

한편

, 해결 방법은 다음과 같습니다

  • 변경 람다 표현식 메소드 참조
  • 메소드로 변환 "빠른 지원 호출 누락 된 방법
  • 을 만들기 위해 빠른 수정을 호출 참조 "(Ctrl+1도 여기에 있음)
+0

마지막 단계에서 "메소드 참조로 변환"이 표시되지 않습니다. 내가 얻는 것은 이것입니다 : http://pasteboard.co/5cz6pqdaQ.png – IARI

+0

오, nvm, 내 잘못 - 나는 당신의 지시를 오해했다고 생각합니다. – IARI

+0

그러나 두 번째 단계에서 Eclipse는 올바르지 않은 반환 유형 Object를 사용하여 메소드를 만듭니다. – IARI