반응형
📖 문제
이전 문제에서 avg() 메소드의 매개값으로 람다식을 전달했었습니다.
이번에는 avg() 호출 시, 람다식을 메서드 참조로 변경하여 동일한 결과가 나오도록 수정해보세요.
📦 기존 코드 (람다식 사용)
double englishAvg = avg(s -> s.getEnglishScore());
double mathAvg = avg(s -> s.getMathScore());
📌 예제 정답 (메서드 참조 방식)
double englishAvg = avg(Student::getEnglishScore);
double mathAvg = avg(Student::getMathScore);
💻 실행 결과
영어 평균 점수 : 92.5
수학 평균 점수 : 94.5
💬 코드 설명
- Student::getEnglishScore는 s -> s.getEnglishScore()와 같은 의미입니다.
- 메서드 참조는 기존 메서드를 람다식처럼 사용할 수 있게 해주는 문법입니다.
- 형식은 클래스이름::메서드이름이며, 매개변수는 자동으로 앞쪽 객체로 매핑됩니다.
💡 학습 포인트
- 람다식을 메서드 참조로 간결하게 변환
코드의 길이를 줄이고 가독성을 높일 수 있습니다. - 함수형 인터페이스와 메서드 참조의 조합 이해
Function<T>의 apply(T t) 메서드는 T 타입의 객체에서 값을 꺼내는 메서드와 호환됩니다. - 메서드 참조의 다양한 유형 익히기
- 정적 메서드 참조: ClassName::staticMethod
- 인스턴스 메서드 참조: Instance::method
- 특정 타입의 인스턴스 메서드 참조: ClassName::instanceMethod
📌 마무리 정리
- 메서드 참조는 람다식을 더 간결하고 명확하게 표현할 수 있는 강력한 기능입니다.
- 특히 함수형 인터페이스와 함께 사용할 때 함수 전달의 가독성이 크게 향상됩니다.
- 람다식과 메서드 참조는 서로 교환 가능하므로, 상황에 맞게 적절히 선택하여 사용하면 좋습니다.
'Java > 연습문제' 카테고리의 다른 글
자바 연습문제 - Stream으로 조건에 맞는 객체만 수집하기 (0) | 2025.05.26 |
---|---|
자바 연습문제 - List에서 객체 필드값 평균 구하기 (1) | 2025.05.26 |
자바 연습문제 - Stream을 이용한 문자열 필터링 (대소문자 무시) (0) | 2025.05.26 |
자바 연습문제 - 람다식과 함수형 인터페이스로 과목별 평균 점수 계산 (0) | 2025.05.22 |
자바 연습문제 - 람다식을 활용한 최대값과 최소값 계산 (0) | 2025.05.22 |
자바 연습문제 - 사용자 정의 함수형 인터페이스 Function 구현 (0) | 2025.05.22 |