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) 형식으로 선언합니다.

💡 학습 포인트

  1. 함수형 인터페이스 직접 정의하기
    Java에서 함수형 인터페이스는 메서드가 하나뿐인 인터페이스로, 람다식과 함께 사용됩니다.
  2. 람다식과 사용자 정의 인터페이스의 결합
    표준 함수형 인터페이스(java.util.function)가 아닌, 사용 목적에 맞는 구조로 인터페이스를 자유롭게 설계할 수 있습니다.
  3. 실제 연산을 추상화된 메서드로 넘기기
    calc()는 내부 연산이 아닌 전략(계산식)을 외부로부터 전달받아 수행하는 구조로, 전략 패턴과도 유사한 개념입니다.

📌 마무리 정리

  • 사용자님의 답안은 함수형 인터페이스의 개념을 잘 이해하고, 문제를 정확히 구현한 정답입니다.
  • 실무에서 자주 쓰이는 Function<T, R>, BiFunction<T, U, R> 등의 표준 인터페이스 개념과도 연결됩니다.
  • 이처럼 연산 로직을 외부에서 전달받는 구조는 유지 보수성과 확장성을 크게 높여줍니다.