본문 바로가기
Java

[Java] 람다식

by happyhelen 2021. 8. 1.

람다식 : 익명함수(anonymous function)을 이용해 익명객체 생성하는 식

           인터페이스를 이용해 껍데기를 만들고 기본적으로 함수를 만들어 원하는 대로 사용 가능한 것

 

객체지향이 아닌 함수(절차)지향으로 프로그래밍하는 방법

객체를 따로 만들 필요 없이 메소드의 핵심적인 부분 ( 파라미터와 실행문 ) 만을 이용해 원하는 결과를 도출

 

인터페이스1~4

public interface No9_Lamda_Interface1 {
	
	public void method(String s1, String s2, String s3);
}
public interface No9_Lamda_Interface2 {

	public void method(String s1);
}
public interface No9_Lamda_Interface3 {

	public void method();
}
public interface No9_Lamda_Interface4 {

	public int method(int a, int b);
}

 

실행클래스

public class No9_Lamda_Main {

	public static void main(String[] args) {
		// 매개변수와 실행문만으로 작성
		No9_Lamda_Interface1 In1 = (String a, String b, String c) -> {System.out.println(a+" "+b+" "+c);};
		In1.method("this", "is", "Lamda");
		
		// 매개변수가 1개이거나 매개변수들의 타입이 같을때-> 타입생략가능
		No9_Lamda_Interface2 In2 = (s1)->{System.out.println(s1); };
		In2.method("Fighting");
		
		// 실행문이 1개일때 '{}' 생략가능
		No9_Lamda_Interface2 In3 = (s1)-> System.out.println(s1);
		In3.method("skip");
		
		// 매개변수와 실행문이  1개일때 '()' 와 '{}' 생략가능
		No9_Lamda_Interface2 In4 = s1 -> System.out.println(s1);
		In4.method("double skip");
		
		// 매개변수가 없을 때 '()'만 작성
		No9_Lamda_Interface3 In5 = ()-> System.out.println("no parameter");
		In5.method();
		
		// 반환값이 있는 경우
		No9_Lamda_Interface4 In6 = (x,y)->{
			int result = x+y;
			return result;
		};
		System.out.printf("In6.method(x,y) : %d\n", In6.method(3, 4));
		
		In6 = (x,y)->{
			int result = x-y;
			return result;
		};
		System.out.printf("In6.method(x,y) : %d\n", In6.method(20, 4));
		// 인터페이스는 껍데기니까 유연하게 사용 가능한 것
	}
}

'Java' 카테고리의 다른 글

[Java] Collections(1)_List 인터페이스  (0) 2021.08.02
[Java] StringBuffer, StringBuilder  (0) 2021.08.01
[Java] 추상클래스  (0) 2021.07.29
[Java] 비트연산  (0) 2021.07.29
[Java] 인터페이스  (0) 2021.07.27