25년 2회 기출 5:40 질문입니다.
인터페이스 예외처리 문제 질문입니다.
일단 인터페이스에서 app메서드가 "정수 입력,출력에 예외를 던질 수 있음" 이라는 형태를 강제시킨 후
람다식(f와 n->n+9)으로 세부 내용을 구현하는게 맞는건가요?
추가로 인터페이스의 구현은 implements로 구현한다고 하셨는데 코드에 implements가 없는데 람다식 등으로 구현가능하면 사용하지 않아도 되는것인가요?
답변 2
1
안녕하세요! 답변을 드립니다.
1) 람다식으로 세부 내용을 구현하는 게 맞나요?
맞습니다.
F는 추상 메서드가 하나뿐인 인터페이스라서, 이런 인터페이스를 함수형 인터페이스라고 합니다.
함수형 인터페이스는 람다식으로 구현할 수 있습니다.
즉 아래 둘은 본질적으로 같은 의미입니다.
람다식 버전
F f = x -> x * 2;익명 클래스로 바꾸면
F f = new F() {
@Override
public int app(int x) throws Exception {
return x * 2;
}
};이걸 짧게 쓴 것을 람다식으로 봐주시면 됩니다.
2) 왜 implements가 없나요?
오해가 있습니다. 이 키워드는 인터페이스를 상속처럼 받아서 클래스를 작성할 때 사용합니다.
implements는 클래스를 선언할 때 씁니다.
람다식은 클래스를 직접 선언하는 문법이 아닙니다.
예를 들어 클래스로 구현하면 implements가 필요합니다.
그런데 지금 코드는 클래스를 따로 만들지 않고,
F 타입이 필요한 자리에 람다식을 바로 넣었습니다.
이때 컴파일러가 이 람다식을 보고
“아, 이건 F의 app을 구현한 것으로 처리하면 되겠구나”
라고 판단해서 내부적으로 맞는 객체로 처리해 줍니다.
문법상 implements는 안 썼지만 의미상으로는 F를 구현한 것으로 봐주시면 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 유찬혁님.
질문하신 인터페이스와 람다식, 그리고 예외처리에 관한 내용에 대해 설명드리겠습니다.
인터페이스와 람다식
인터페이스에서 메서드가 “정수 입력, 출력에 예외를 던질 수 있음”이라는 형태를 강제하는 것은 맞습니다. 이러한 인터페이스를 구현할 때는 일반적으로 “익명 클래스” 또는, Java 8 이후부터는 “람다식”을 사용하여 구현할 수 있습니다.
람다식을 이용한 구현: 람다식은 함수형 인터페이스(여러 개가 아닌 오직 하나의 추상 메서드를 가진 인터페이스)를 매우 간단하게 구현할 수 있는 방식입니다.
f와n->n+9같은 람다 표현식은 해당 인터페이스를 구현한 것과 동일한 역할을 합니다.implements키워드 사용 여부: 일반적으로 클래스를 통해 인터페이스를 구현할 때는implements키워드를 사용합니다. 그러나 함수형 인터페이스의 경우, 람다식은 그 인터페이스의 추상 메서드 하나를 구현하는 것과 동일한 효과가 있기 때문에, 람다식이나 메서드 참조를 사용할 때 직접implements키워드를 사용할 필요는 없습니다.
요약
정리하자면, Java에서 함수형 인터페이스와 람다식을 통해 사용자가 메서드를 간단히 작성할 수 있으며, 이때 직접적으로 implements를 사용할 필요가 없습니다. 람다식은 함수형 인터페이스가 요구하는 특정 시그니처의 메서드를 구현하여 사용하는 것입니다.
추가적인 정보를 위해 관련 질문 URL을 첨부드립니다:
- Java 람다식과 함수형 인터페이스 이해하기 - 람다식의 기본 원리와 작동 방식을 설명합니다.
- 자바 함수형 프로그래밍에 대한 질문 - 함수형 프로그래밍의 장점과 구현 방식을 다룹니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
정처기 26-2회. 9번 질문드립니다!
0
36
1
이론 보면서 질문이 있습니다.
0
39
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
49
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
71
2
262 정처기 실기 C언어코딩
0
29
1
정보처리기사 262 실기 Hash(해시) 질문
0
58
2
static 변수 질문입니다.
0
45
2
파이썬 4강 질문입니다.
0
52
2
모의고사 1회 3번문제
0
75
3
41강 30:10
0
51
2
이론 공부법 질문 있습니다.
0
74
2
부모의 생성자 관련 질문
0
53
2
시험지 문제에 필기해도 되나요?
0
61
3
41강 11:23
0
47
2
4강파이썬 질문입니다
0
46
2
try-catch 핸들러명
0
55
2
36강 3:48
0
57
2
35강 18:27
0
52
2
자식 코드 내 super() 생략
0
51
2
출력질문
0
67
2
31강 4:06
0
57
2
파이썬 학습자료가 강의 자료와 다릅니다.
0
84
3
섹션 2 - 9강 강의자료 다운로드 문제
0
69
3
29강 3:09
0
52
2





