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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions