본문 바로가기

Programming/JAVA

람다식(5) - 메서드 참조 2 : 정적 메서드, 인스턴스 메서드 참조

JAVA Logo Image

 

 

 

앞서 살펴본 메서드 참조의 개념을 활용해서 정적(static) 메서드를 참조하는 경우와 인스턴스 메서드를 참조하는 경우를 각각 살펴보도록 하겠습니다. 

 

 

람다식(5) - 메서드 참조 1 : 메서드 참조의 개념

메서드 참조(Method References)의 개념은, 메서드를 참조해서 파라미터의 정보와 리턴 타입을 알아낸 다음 람다식에서 불필요한 파라미터를 제거하는 것이 목적입니다. 즉, 생략할 수 있는 것은 생

nozeroslope.tistory.com

 

// 정적 메서드 참조
클래스 :: 메서드

// 인스턴스 메서드 참조. 객체를 먼저 생성한다.
참조변수 :: 메서드

 

위의 케이스에 대해서는 예제를 통해서 살펴보도록 하겠습니다. Calculator라는 클래스에서 정적 / 인스턴스 메서드를 각각 선언하고 이를 람다식을 통해서 사용하는 형태로 구현해 보겠습니다. 

 

public class Calculator {
	public static int staticMethod(int x, int y) {
		return x + y;
	}
	
	public int instanceMethod(int x, int y) {
		return x + y;
	}
}

 

import java.util.function.IntBinaryOperator;

public class ExampleMain {
	public static void main(String[] args) {
		IntBinaryOperator operator;
		
		// 정적 메서드의 참조
		operator = (x, y) -> Calculator.staticMethod(x, y);
		System.out.println("Result 1: " + operator.applyAsInt(100, 200));
	
		operator = Calculator :: staticMethod;
		System.out.println("Result 2: " + operator.applyAsInt(300, 400));
		
		// 인스턴스 메서드의 참조
		Calculator obj = new Calculator();
		
		operator = (x, y) -> obj.instanceMethod(x, y);
		System.out.println("Result 3: " + operator.applyAsInt(500, 600));
		
		operator = obj :: instanceMethod;
		System.out.println("Result 4: " + operator.applyAsInt(700, 800));
	}
}

/* 출력
Result 1: 300
Result 2: 700
Result 3: 1100
Result 4: 1500
*/