강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

cpoooo107님의 프로필 이미지
cpoooo107

작성한 질문수

2026 벼락치기 합격! 기출문제 집중 정보처리기사 실기

2025년2회8~11

25년 2회 8~11 3:14

해결된 질문

작성

·

14

0

3:14

run(f) + run((int(n) -> n + 9);

run(f)와 int(n) 두개 모두 apply함수를 탄다고 말씀해주셨는데
하나는 if문에 접근하고 다른 하나는 왜 if문에 접근을 안하는지 궁금합니다

퀴즈

키-포인터 쌍을 사용하여 레코드를 빠르게 검색하는 파일 접근 방식은 무엇일까요?

순차 접근

색인 접근

해싱 접근

직접 접근

답변 2

0

멍슨상님의 프로필 이미지
멍슨상
지식공유자

코드 다시 보면

System.out.print(run(f) + run((int n) -> n + 9));

이건 사실 이렇게 풀어서 생각하면 이해가 쉽습니다:

int a = run(f);
int b = run((int n) -> n + 9);

System.out.print(a + b);

run()2번 호출됨
그 안에서 각각 apply()가 실행됨


각각 어떻게 실행되냐

1⃣run(f)

return f.apply(3);

여기서 실행되는 apply는:

(x) -> {
    if (x > 2) {
        throw new Exception();
    }
    return x * 2;
}

3 > 2 → 예외 발생
catch에서 7 반환


2⃣run((int n) -> n + 9)

여기 apply는:

(int n) -> n + 9

apply(3)12


"run()이 두 번 호출되기 때문에 apply도 두 번 실행된다"


람다는 "함수 정의"일 뿐

F f = (x) -> {...}

👉 이건 실행이 아니라 정의만 한 것


실제 실행은 여기서 일어남

f.apply(3);

👉 이게 실행 트리거


요소역할F f = ...함수 정의run(f)함수 실행 요청f.apply(3)실제 실행run(...) + run(...)두 번 실행


run()이 두 번 호출되기 때문에 apply()도 두 번 실행되는 것입니다.

0

안녕하세요, 인프런 AI 인턴입니다. cpoooo107님.

질문하신 내용은 자바의 람다 표현식과 함수형 인터페이스에 대한 이해가 필요합니다. run(f)run(int(n) -> n + 9)는 모두 함수형 인터페이스를 기반으로 하는 자바 코드로 보입니다. 이 두 코드는 각각 다른 방식으로 함수가 호출되거나, 실행 중에 조건문에 접근하는 방법에 차이가 있을 수 있습니다.

특히, 자바에서는 함수형 인터페이스의 apply 메서드가 구현되어 있는지 혹은 직접 호출되고 있는지에 따라 if문 접근 여부가 달라질 수 있습니다. 한쪽이 if문을 탄다면 이는 조건의 참/거짓을 평가해야 할 상황이 발생하는 것으로, if문을 타지 않는 것은 해당 조건문에 접근하지 않아도 되는 로직일 가능성이 있습니다.

이를 구체화하기 위해 구체적인 코드나 상황 설명이 필요할 수 있습니다. 관련된 코드나 예제를 제공해 주시면 보다 명확한 답변을 드릴 수 있을 것 같습니다.

유사한 개념을 다룬 기존 게시물을 참고하시면 이해에 도움이 될 수 있습니다. 다음 링크를 통해 관련 내용에 접근하실 수 있습니다.

  1. 25년 2회 8~11 코드 동작 설명에 대한 답변: 자바에서의 오버라이딩이나 메서드 호출의 구체적인 동작 방식을 파악할 수 있는 답변입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

cpoooo107님의 프로필 이미지
cpoooo107

작성한 질문수

질문하기