interface Printable {
void print(String s);
}
class Printer implements Printable {
public void print(String s) {
System.out.println(s);
}
}
public class Lambda1 {
public static void main(String[] args) {
Printable prn = new Printer();
prn.print("What is Lambda?");
}
}
위 코드에 익명 클래스를 적용하면 다음과 같아진다.
interface Printable {
void print(String s);
}
public class Lambda2 {
public static void main(String[] args) {
Printable prn = new Printable() {
public void print(String s) {
System.out.println(s);
}
};
prn.print("What is Lambda?");
}
}
클래스의 정의 하나가 줄어든 것을 볼 수 있다.
그리고 이를 람다 기반으로 수정하면 인스턴스 생성문을 생략할 수 있다.
interface Printable {
void print(String s);
}
public class Lambda3 {
public static void main(String[] args) {
Printable prn = (s) -> {
System.out.println(s);
};
prn.print("What is Lambda?");
}
}
위 문장에서 Printable prn 의 오른쪽에 위치한 것이 람다식이다.
Printable prn = (s) -> { System.out.println(s); };
■ 람다식의 인자 전달
interface Printable {
void print(String s);
}
public class Lambda4 {
public static void ShowString(Printable p, String s) {
p.print(s);
}
public static void main(String[] args) {
ShowString((s) -> {
System.out.println(s);
}, "What is Lambda?");
}
}
위 예제와 같이 메소드의 인자로 람다식이 전달될 수 있다.
'Language > Java' 카테고리의 다른 글
함수형 인터페이스 (0) | 2023.03.03 |
---|---|
람다 2 (0) | 2023.03.02 |
네스티드 클래스와 이너 클래스 (0) | 2023.02.27 |
컬렉션 프레임워크 5 (0) | 2023.02.24 |
컬렉션 프레임워크 4 (2) | 2023.02.23 |