====== 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}}