Effective Java Item 45
Date:
스트림은 주의해서 사용하라
람다로 불가능한 것들
p 273 를 보면
코드 블록에서는 return 문을 사용해 메서드에서 빠져나가거나, break나 continue 문으로 블록 바깥의 반복문을 종료하거나 반복을 한 번 건너뛸 수 있다. 또한 메서드 선언에 명시된 검사 예외를 던질 수 있다. 하지만 람다로는 이 중 어떤 것도 할 수 없다.
라고 나와있다.
메서드 선언에 명시된 검사 예외를 던진다
라는 문장의 원문이다.
throw any checked exception that this method is declared to throw;
그런데 링크 를 참조하면 람다로도 checked exception을 구현할 수 있는 거 같다(?)
return으로 빠져나오는 것도 가능하지 않을까?
(int a, int b) -> {
if(a==1){
return 0 ;
}
return a+b;
}
비슷하게
(int a, int b) -> {
while(true){
break;
}
}
이런 것도 가능할 거 같다.
책에서 말한 람다로 할 수 있는 것이란 이렇게 중괄호 속에 복잡하게 표현한 것은 제외한 것일까? 좀더 공부해보아야겠다.
참고(Reference)
자바 8 람다에서 checked exception을 어떻게 구현하면 좋을까?
Handling checked exceptions in Java streams
댓글