====== Lamda and Double Colon Operator ====== * description : Lamda and Double Colon Operator * author : 오션 * email : shlim@repia.com * lastupdate : 2022-03-11 ===== Lamda and Double Colon Operator ===== interface Calculator { // 두 개의 정수를 입력받고, 결과값을 리턴하는 sum 함수를 정의한 Calculator 인터페이스 int sum(int a, int b); } class MyCalculator implements Calculator // 자식 클래스 MyCalculator는 인터페이스인 부모 클래스 Calculator를 구현한다. public int sum(int a, int b) { return a + b; } } public class Sample { public static void main(String[] args) { MyCalculator mc = new MyCalculator(); int result = mc.sum(3, 4); System.out.println(result); // 7(=3+4) 출력 } } \\ ==== 람다(Lamda)를 적용한 코드 ==== interface Calculator { // 두 개의 정수를 입력받고, 결과값을 리턴하는 sum 함수를 정의한 Calculator 인터페이스 int sum(int a, int b); } public class Sample { public static void main(String[] args) { Calculator mc = (int a, int b) -> a + b; int result = mc.sum(3, 4); System.out.println(result); // 7(=3+4) 출력 } } \\ 위 코드에서 사용한 람다 Calculator mc = (int a, int b) -> a + b; 1. (int a, int b)는 Calculator 인터페이스의 sum 함수의 입력항목(parameter) 2. a + b 는 리턴값 ☝람다를 사용하면 위의 MyCalculator와 같은 실제 클래스가 없이도 Calculator 객체를 생성할 수 있음. \\ ==== 람다(Lamda) 축약 ==== 1. Calculator mc = (int a, int b) -> a + b; 2. Calculator mc = (a, b) -> a + b // 인터페이스에 이미 입출력에 대한 타입이 정의되어 있어 입력값의 타입인 int는 생략이 가능 3. Calculator mc = Integer::sum; // (a, b) -> a + b 는 Integer.sum(int a, int b)와 동일하기 때문에 \\ ==== Double Color (::) Operator ( = Method Reference Operator ) ==== class-name::method-name; // target reference::method reference \\ === Example === Computer::getAge; // method reference to the method getAge defined in the Computer class // Computer 클래스에 정의된 getAge 메소드에 대한 참조 메소드 \\ ==== Ref ==== [[https://www.baeldung.com/java-8-double-colon-operator|The Double Colon Operator in Java 8]] \\ [[https://www.geeksforgeeks.org/double-colon-operator-in-java/|Double color(::) operator in Java]] \\ [[https://wikidocs.net/157858|07-06 함수형 프로그래밍]] \\ {{tag> 오션, Double-Colon-Operator}}