우선 람다를 알아보기 전에 함수형 인터페이스에 대해서 먼저 알아야 한다.
함수형 인터페이스
함수형 인터페이스란 한 인터페이스에 단 1개의 추상메소드를 갖는 인터페이스를 의미한다.
그럼 위의 인터페이스는 함수형 인터페이스일까 아닐까?
대답은 No이다.
함수형 인터페이스 특징
1. 함수형 인터페이스는 단 1개의 추상메소드를 가져야한다.
2. 만약 2개 이상의 추상메소드를 가지면 함수형 인터페이스가 될 수 없다.
3. printName(), printAge()와 같이 몸체가 구현된 인터페이스는 갯수와 상관없이 함수형 인터페이스에는
아무런 영향이 없다.
위의 코드는 추상메소드가 하나만 존재하기 때문에 함수형 인터페이스라고 할 수 있다.
여기서 @FunctionalInterface 어노테이션이 의미하는 바가 무엇인지 궁금할 수 있다.
@FunctionalInterface
어노테이션은 java8에 추가된 어노테이션이다.
위 어노테이션은 적용된 인터페이스가 함수형 인터페이스인지 아닌지 판별해주는 어노테이션이다.
즉, 위와 같이 추상메소드가 단 1개만 존재한 경우에는 아무 문제가 없지만
위의 코드처럼 추상메소드가 2개 이상인 경우에는 @FunctionalInterface어노테이션에 의해 오류를 잡아서
개발자에게 알려주는 역할을 한다.
람다란?
프로그래밍 언어에서 사용되는 개념으로 익명함수를 의미한다.
람다의 형태
인터페이스 객체명 =(매개변수 리스트) -> {함수 몸체}; 식으로 구성이 된다.
또한 람다는 switch문에서도 사용될 수 있다.
위의 코드처럼 str문자열이 case문에 해당하면 람다를 이용하여 콘솔에 출력하게끔 할 수 있다.
위 처럼 정상적으로 출력되는 것을 확인할 수 있다.
'JAVA' 카테고리의 다른 글
[JAVA] 객체&생성자(new 키워드,빌더 패턴) (0) | 2023.04.03 |
---|---|
[JAVA] 클래스정의&종류 (0) | 2023.04.03 |
[JAVA] 산술연산자 & 비트연산자 (0) | 2023.03.22 |
[JAVA] 타입변환&타입추론 var (0) | 2023.03.22 |
[JAVA] 리터럴변수&변수의스코프와 라이프타임 (0) | 2023.03.21 |