Skip to content

[아이템 45] 스트림은 주의해서 사용하라 #11

@punsoo

Description

@punsoo

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;
  }
}

이런 것도 가능할 거 같습니다.

책에서 말한 람다로 할 수 있는 것이란 이렇게 중괄호 속에 복잡하게 표현한 것은 제외한 것일까요?
람다로 하면 깔끔하지는 않지만 가능한 거 같은 것들을 책에서 불가능하다고 해서 혼란이 옵니다.

정완님 의견이 궁금하네요

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions