JAVA-Basic

7.람다(Lamda)를 이용한 익명 구현 객체(Anonymous implementation Object) 사용

Jungsoomin :) 2020. 7. 10. 14:59

람다식코드의 간결성속도를 높여주는데 뛰어난 성능을 보여주며, 코드의 가독성 또한 증가시킨다.

 

람다식의 전제조건은 정의된 추상메서드가 1개여야만 한다는 것이다. 이것을 함수적 인터페이스라고 한다.

@FunctionalInterface
public interface MyInterface2 {
	int method(int a);
	
	default void print() {
		System.out.println("Hello");
	}
}

 

@FunctionalInterface 에노테이션이 붙어있는데, 없어도 무방하다. 이 에노테이션의 의미는 컴파일러에게 함수적인터페이스라고 전달하는 것이며 만약 함수적 인터페이스가 아닐경우( 즉 추상메서드가 1개가 아닐경우) 컴파일러는 컴파일 오류를 발생시키는 것으로 기억하고 있다.

public class Main {

	public static void main(String[] args) {
		MyInterface mif1 = new MyInterface() {
			@Override
			public void method(int a, int b) {
				
			}
		};
//		람다를 이용한 익명 구현 객체
		MyInterface mif =  (a,b) -> {
			
		};
		
		MyInterface2 mif3 = new MyInterface2() {
			@Override
			public int method(int a) {
				// TODO Auto-generated method stub
				return 0;
			}
		};
//		람다를 이용한 익명 구현 객체		
		MyInterface2 mif4 = (a) -> {
			return 0;
		};
		
//		1줄일 경우 리턴 문 생략
		MyInterface2 mif5 = (a) ->  0;
		
		MyInterface2 mif6 = (a) ->  a*2;
		
		mif6.print();
		System.out.println(mif6.method(99));
		
	}

}

 

람다는 () ->{}; 로 종결이 되는데. 만약 Statement가 1줄이라면 {}을 생략할 수 있다. 또한 리턴이 명확할 경우 return문 또한 생략이 가능하다.

 

() 사이에는 추상메서드의 매개변수가 오게 되니, 파악하고 맞는 파라미터 이름을 아무거나 지정해주면 {}안에서 자유롭게 사용이 가능하다.

'JAVA-Basic' 카테고리의 다른 글

9.hashcode & equals  (0) 2020.07.10
8.Exception 예외와 처리  (0) 2020.07.10
7.익명클래스(AnonymousClass)  (0) 2020.07.10
6.Interface와 다형성의 구현과정  (0) 2020.07.10
5.추상클래스와 상속관계의 Promotion & Casting  (0) 2020.07.10