JAVA

[JAVA] 함수형 인터페이스 & (->)람다식

EJUN 2023. 4. 2. 22:07

우선 람다를 알아보기 전에 함수형 인터페이스에 대해서 먼저 알아야 한다.

함수형 인터페이스
함수형 인터페이스란 한 인터페이스에 단 1개의 추상메소드를 갖는 인터페이스를 의미한다.

함수형 인터페이스가 아닌 경우

그럼 위의 인터페이스는 함수형 인터페이스일까 아닐까?

대답은 No이다.

함수형 인터페이스 특징

1. 함수형 인터페이스는 단 1개의 추상메소드를 가져야한다.

2. 만약 2개 이상의 추상메소드를 가지면 함수형 인터페이스가 될 수 없다.

3. printName(), printAge()와 같이 몸체가 구현된 인터페이스는 갯수와 상관없이 함수형 인터페이스에는 

   아무런 영향이 없다.

함수형 인터페이스인 경우

위의 코드는 추상메소드가 하나만 존재하기 때문에 함수형 인터페이스라고 할 수 있다.

 

여기서 @FunctionalInterface 어노테이션이 의미하는 바가 무엇인지 궁금할 수 있다.

@FunctionalInterface

어노테이션은 java8에 추가된 어노테이션이다.

위 어노테이션은 적용된 인터페이스가 함수형 인터페이스인지 아닌지 판별해주는 어노테이션이다.

즉, 위와 같이 추상메소드가 단 1개만 존재한 경우에는 아무 문제가 없지만 

@FunctionalInterface 사용예시

위의 코드처럼 추상메소드가 2개 이상인 경우에는 @FunctionalInterface어노테이션에 의해 오류를 잡아서 

개발자에게 알려주는 역할을 한다.

 

람다란?
프로그래밍 언어에서 사용되는 개념으로 익명함수를 의미한다.

람다식 표현

람다의 형태
인터페이스 객체명 =(매개변수 리스트) -> {함수 몸체}; 식으로 구성이 된다.

또한 람다는 switch문에서도 사용될 수 있다.

람다 활용 - switch문

위의 코드처럼 str문자열이 case문에 해당하면 람다를 이용하여 콘솔에 출력하게끔 할 수 있다.

람다 활용 - switch문 출력

위 처럼 정상적으로 출력되는 것을 확인할 수 있다.