인프런 커뮤니티 질문&답변
25년 2회 8~11 3:14
해결된 질문
작성
·
14
퀴즈
키-포인터 쌍을 사용하여 레코드를 빠르게 검색하는 파일 접근 방식은 무엇일까요?
순차 접근
색인 접근
해싱 접근
직접 접근
답변 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 + 9apply(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문을 타지 않는 것은 해당 조건문에 접근하지 않아도 되는 로직일 가능성이 있습니다.
이를 구체화하기 위해 구체적인 코드나 상황 설명이 필요할 수 있습니다. 관련된 코드나 예제를 제공해 주시면 보다 명확한 답변을 드릴 수 있을 것 같습니다.
유사한 개념을 다룬 기존 게시물을 참고하시면 이해에 도움이 될 수 있습니다. 다음 링크를 통해 관련 내용에 접근하실 수 있습니다.
- 25년 2회 8~11 코드 동작 설명에 대한 답변: 자바에서의 오버라이딩이나 메서드 호출의 구체적인 동작 방식을 파악할 수 있는 답변입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




