사용자 도구

사이트 도구


wiki:miscellaneous:doublecolonoperator:double_colon_operator

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

/volume1/web/dokuwiki/data/pages/wiki/miscellaneous/doublecolonoperator/double_colon_operator.txt · 마지막으로 수정됨: 2023/01/13 18:44 (바깥 편집)