람다식 (Rambda)

람다란?

나중에 실행하는 메서드의 구현을 간결하게 기술하는 방법

  • Runnable 인테페이스의 run 구현


Runnable r1 = new Runnable() {
 public void run(){
   System.out.println("Hello, world");
}
};
r1.run();

`

  • 위 예제를 람다로 구현

Runnable r2 = () -> System.out.println("Hello, world");
r2.run();


람다 문법

  1. ( ) 안에 매개변수 집합

  2. 화살표 (->)

  3. 하나의 표현식이거나 코드블록이 될 수 있는 바디


  • 기본 예


Comparator<String> c1 = (String str1, String str2) -> str1.compareTo(str2);

`

  • return 예


Comparator<String> c2 = (String str1, String str2) -> {
 return str1.compareTo(str2);
};

`

  • 위 코드에 String은 빼도 된다. (자바8의 향상된 타입추론 기능)


Comparator<String> c3 = (str1, str2) -> {
 return str1.compareTo(str2);
};

`

  • 함수형 인터페이스 아니면 컴파일 에러


// Object가 함수형 인터페이스가 아니라서 오류
//Object o = () -> System.out.println("Howdy, world!");

// 형변환으로 오류 해결            
Object o1 = (Runnable)() -> System.out.println("aa");

`

  • 람다이후에 append해도 정상적으로 접근가능

StringBuilder sb = new StringBuilder();
Runnable r = () -> System.out.println(sb);
sb.append("hello, ");
sb.append("world!");
r.run();
// hello, world! 출력

`

+ Recent posts