2016-07-14 2 views
2

우리가 개인 방법으로 설정하는 코드를화살표 표기법 (->)을 사용하여 보호 된 메서드를 만드는 방법?

Stream.of(1,2,3,4,5).filter(i -> (i%2 == 0)).map(i -> i*i); 

표현 i -> (i%2 == 0) 또는 i -> i*i을 다음 쓰기.

내 유스 케이스 중 하나는 junit 테스트 중 하나가 메소드가 private (yaah, that 's 필수)가 아닌지 확인하기 위해 작성되었으며,이 람다 표현에는 실패합니다.

누군가가 내가 람다 표현식 일부 제외를 추가 할 JUnit을 변경하지만, 이러한 표현은 내부적으로 보호 방법을 만들 필요가 없습니다 것을 특징으로 무언가를 제안 할 수 있습니다?

+19

테스트가 미친 것이므로 제거해야합니다. – SLaks

+1

이것이 요구 사항이라면 명시 적으로 메소드를 정의하고 보호하도록하십시오. 그러나 SLaks가 말했듯이 이것은 솔직히 제정신이 아닙니다. –

+4

람다가 "개인적인 방법으로 변한다"고 말할 때 나는 무슨 뜻인지 이해하지 못합니다. 그것이 "무엇이든지"로 바뀌면 그것은 "함수"또는 어떤 것의 인스턴스이고, 그러한 메소드는 공개됩니다. 개인적인 방법으로 바뀌면'filter'와'map'이 어떻게 그들을 호출 할 수 있을까요? – aioobe

답변

8
protected static boolean isEvent(int i){ 
    return i %2 == 0 
} 

ints.stream().filter(MyClass::isEvent) 
+0

그건 정말 좋은 해결 방법이지만, **는 ** 표기법의 전체적인 개념을 죽입니다. :) 화살표를 바꾸지 않고 보호 된 방법을 얻을 수있는 방법이 있습니까? –

+1

메소드 참조는 람다 대신에 기존의 메소드를 사용하는 절대적으로 합법적이고 관용적 인 방법입니다. 다른 방법은 주위에 - 그 자주, 예 :) – Nikem

+0

나는 당신의 솔루션을 구입. :) –

관련 문제