//람다식
//객체지향이 아닌 함수지향으로 생성하는 변수
//익명 함수(anonymous function)을 이용해서 객체를 생성하기 위한 식이다.
//기존방법 : interface 구현 --> interfaceType 변수
//람다식 방법 : interface 구현 --> Lambda Expressions (람다 익스프레션)-->interfaceType 변수
public class MainClass {
public static void main(String[] args) {
// 매개 변수와 실행문만으로 작성.(접근자, 반환형, return키워드 생략)
Lambdainterface1 li1 = (String s1, String s2, String s3) -> { System.out.println(s1 + " " +s2+" "+s3); };
li1.method("Hello", "Java","World");
System.out.println();
// 매개변수가 1개이거나 타입이 같을때 타입을 생략가능
Lambdainterface2 li2 = (s1) -> {System.out.println(s1);};
li2.method("Hello");
// 실행문이 1개일 때 , {} 를 생략가능
Lambdainterface2 li3 = (s1) -> System.out.println(s1);
li3.method("Hello");
// 실행문이 1개일 때 , {}, () 를 생략가능
Lambdainterface2 li4 = s1 -> {System.out.println(s1);};
li4.method("Hello");
// 매개변수가 없을때 ()만 이용한다.
Lambdainterface3 li5 = () -> System.out.println("no paramether");
li5.method();
// 반환값이 있는 경우
Lambdainterface4 li6 = (x, y) -> {
int result = x+y;
return result;
};
System.out.printf("li6.method(10, 20) : %d\n", li6.method(10,20));
li6 = (x,y) -> {
int result = x+y;
return result;
};
System.out.printf("li6.method(10,20) : %d\n", li6.method(10,20));
}
}
public interface Lambdainterface1 {
public void method(String s1, String s2, String s3);
}
public interface Lambdainterface2 {
public void method(String s1);
}
public interface Lambdainterface3 {
public void method();
}
public interface Lambdainterface4 {
public int method(int x, int y);
}
결과값
Hello Java World
Hello
Hello
Hello
no paramether
li6.method(10, 20) : 30
li6.method(10,20) : 30
'Develop > JAVA' 카테고리의 다른 글
JAVA Collections(List,Map) (0) | 2023.10.17 |
---|---|
JAVA 문자열클래스(String,StringBuffer, StringBuilder) (0) | 2023.10.17 |
JAVA 추상클래스 (0) | 2023.10.17 |
JAVA 인터페이스 (0) | 2023.10.17 |
JAVA 내부(inner) 클래스와 익명(anonymous) 클래스 (0) | 2023.10.17 |