Lambda Expressions 람다식의 활용 - 껍데기
by 으렴어우.. 람다식 넘나 어렵고요^^;
람다식의 정의와 활용법 등은 앞글에서 보고 오쎄옹
후;;
이게 모라;;
암튼
B b4 = () -> () -> System.out.println("람다식ㅜㅜ");
와웅 몇다리를 걸친 람다식을 한번 만들어 보겠다.
자 이제 인터페이스 A와 B를 만든다.
interface A {
public void func01();
}
interface B {
public A func02(); // interface가 리턴된다
}
A는 평범하게 아무것도 리턴하지 않는 보이드를 사용하고
B는 헷갈리지않게 func02라는 이름으로 생성하고 리턴타입을 A로 한다.
이는 interface가 리턴 된다는 말이다.
B b1 = new B() {
public A func02() {
return new A() {
public void func01() { //1껍딱 떼기
System.out.println("new B -> func02 -> return -> new A -> func01 ->출력");
}
};
}
};
껍따구가 여러개이다.
여기서 한개의 껍따구를 떼보자
B b2 = new B() {
public A func02() { //2껍딱 떼기
return () -> {
System.out.println("new B -> func02 -> return -> /* new A -> func01 */ ->출력");
};
}
};
new A와 func01의 껍따구가 벗겨졌다.
주석해둔 껍따구를 벗겨보자
B b3 = () -> {
return () -> {
System.out.println("/* new B -> func02 -> */ return -> /* new A -> func01 */ ->출력");
};
};
와웅
이렇게 해두고 첨에 완성인줄 알았따.
아니어따..
B b4 = () -> () -> System.out.println("/* new B -> func02 -> */ /* return -> */ /* new A -> func01 */ ->출력");
껄껄껄 이렇게 희안하게 생긴 람다식이 나온다.
굉; 장;
b1.func02().func01();
b2.func02().func01();
b3.func02().func01();
b4.func02().func01();
이것을 돌려보면
new B -> func02 -> return -> new A -> func01 ->출력
new B -> func02 -> return -> /* new A -> func01 */ ->출력
/* new B -> func02 -> */ return -> /* new A -> func01 */ ->출력
/* new B -> func02 -> */ /* return -> */ /* new A -> func01 */ ->출력
요렇게 나온다. 주석부분만 지워보게따.
와아우...
코드 껍데기를 그림으로보면 노랑이 벗기고 초록이 벗기고 파랑이를 벗겼다고 생각하면 된다.
'Programming Language > JAVA' 카테고리의 다른 글
JAVA에서의 LinkedList 설명과 사용법 그리고 함수 (0) | 2019.07.21 |
---|---|
Stack Unwinding 스택풀기 :: 스레드 반복, 람다식 등 활용 (0) | 2019.07.18 |
이너클래스에서 아우터클래스 Field 부르기 (0) | 2019.07.18 |
DESIGN-PATTERN :: Singleton Pattern 싱글톤 패턴 (0) | 2019.07.17 |
숫자연산과 진법, String연산 (0) | 2019.07.17 |
사이트의 정보
코딩하렴
으렴