Java/연습문제

자바 연습문제 - 메서드 참조(Method Reference)로 평균 계산

코딩하는냥이 2025. 5. 22. 17:24
반응형

📖 문제

이전 문제에서 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()와 같은 의미입니다.
  • 메서드 참조는 기존 메서드를 람다식처럼 사용할 수 있게 해주는 문법입니다.
  • 형식은 클래스이름::메서드이름이며, 매개변수는 자동으로 앞쪽 객체로 매핑됩니다.

💡 학습 포인트

  1. 람다식을 메서드 참조로 간결하게 변환
    코드의 길이를 줄이고 가독성을 높일 수 있습니다.
  2. 함수형 인터페이스와 메서드 참조의 조합 이해
    Function<T>의 apply(T t) 메서드는 T 타입의 객체에서 값을 꺼내는 메서드와 호환됩니다.
  3. 메서드 참조의 다양한 유형 익히기
    • 정적 메서드 참조: ClassName::staticMethod
    • 인스턴스 메서드 참조: Instance::method
    • 특정 타입의 인스턴스 메서드 참조: ClassName::instanceMethod

📌 마무리 정리

  • 메서드 참조는 람다식을 더 간결하고 명확하게 표현할 수 있는 강력한 기능입니다.
  • 특히 함수형 인터페이스와 함께 사용할 때 함수 전달의 가독성이 크게 향상됩니다.
  • 람다식과 메서드 참조는 서로 교환 가능하므로, 상황에 맞게 적절히 선택하여 사용하면 좋습니다.