Develop/JAVA

JAVA 람다식

roalwh 2023. 10. 17. 20:51

 

//람다식
//객체지향이 아닌 함수지향으로 생성하는 변수
//익명 함수(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