Java/연습문제
자바 연습문제 - 사용자 정의 함수형 인터페이스 Function 구현
코딩하는냥이
2025. 5. 22. 16:16
반응형
📖 문제
다음 코드를 보고, Function 함수형 인터페이스를 직접 정의해보세요.
람다식으로 두 실수 값을 받아 계산하는 구조를 구현합니다.
📦 예제 클래스
Example.java
public class Example {
public static double calc(Function fun) {
double x = 10;
double y = 4;
return fun.apply(x, y);
}
public static void main(String[] args) {
double result = calc((x, y) -> (x / y));
System.out.println("result : " + result);
}
}
📌 예제 정답 (Function.java)
public interface Function {
double apply(double x, double y);
}
💻 실행 결과
result : 2.5
💬 코드 설명
- calc() 메서드는 Function 타입의 함수형 인터페이스를 매개변수로 받아, apply() 메서드를 호출합니다.
- main()에서 (x, y) -> (x / y)라는 람다식을 전달하면, x = 10, y = 4이므로 2.5가 반환됩니다.
- Function 인터페이스는 두 개의 double을 입력으로 받아 double을 반환하는 메서드를 정의해야 하므로 apply(double x, double y) 형식으로 선언합니다.
💡 학습 포인트
- 함수형 인터페이스 직접 정의하기
Java에서 함수형 인터페이스는 메서드가 하나뿐인 인터페이스로, 람다식과 함께 사용됩니다. - 람다식과 사용자 정의 인터페이스의 결합
표준 함수형 인터페이스(java.util.function)가 아닌, 사용 목적에 맞는 구조로 인터페이스를 자유롭게 설계할 수 있습니다. - 실제 연산을 추상화된 메서드로 넘기기
calc()는 내부 연산이 아닌 전략(계산식)을 외부로부터 전달받아 수행하는 구조로, 전략 패턴과도 유사한 개념입니다.
📌 마무리 정리
- 사용자님의 답안은 함수형 인터페이스의 개념을 잘 이해하고, 문제를 정확히 구현한 정답입니다.
- 실무에서 자주 쓰이는 Function<T, R>, BiFunction<T, U, R> 등의 표준 인터페이스 개념과도 연결됩니다.
- 이처럼 연산 로직을 외부에서 전달받는 구조는 유지 보수성과 확장성을 크게 높여줍니다.