람다란?
나중에 실행하는 메서드의 구현을 간결하게 기술하는 방법
나중에 실행하는 메서드의 구현을 간결하게 기술하는 방법
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();
람다 문법
( ) 안에 매개변수 집합
화살표 (->)
하나의 표현식이거나 코드블록이 될 수 있는 바디
( ) 안에 매개변수 집합
화살표 (->)
하나의 표현식이거나 코드블록이 될 수 있는 바디
기본 예
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! 출력
`
'DEV > JAVA' 카테고리의 다른 글
[Java] Wrapper클래스 (오토박싱, 언박싱) (0) | 2020.02.27 |
---|---|
[Java] String, StringBuffer, StringBuilder (0) | 2020.02.27 |
[java] Socket 통신 기본문법 (0) | 2019.10.10 |
io_5 : 총 13개 클래스 정리 (0) | 2019.10.08 |
id_4 : BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter (0) | 2019.10.08 |