티스토리 뷰
익명 클래스를 만들어서 처리할 수 있다면, 메소드도 익명으로 만들 수 없을까? 라는 생각을 할 수 있다.
//MyRunnable.java
@FunctionalInterface
public interface MyRunnable {
void run();
}
//Main.java
public class Main {
public static void main(String[] args) {
MyRunnable r = new MyRunnable() { //new MyRunnable() 이라는 익명 클래스를 만들 것이 뻔하므로 생략
@Override //@Override는 뻔하므로 생략
public void run() { //MyRunnable 인터페이스 안에 public void run이 있는 것은 뻔하므로 생략
System.out.println("Hello");
}
};
}
}
위의 코드를 아래처럼 줄일 수 있다.
//Main.java
public class Main {
public static void main(String[] args) {
MyRunnable r = () -> System.out.println("Hello");
//r.run()
}
}
위와 같이 익명 메소드를 사용해서 표현하는 방법을 람다표현식 이라고 한다.
익명 메소드는 Functional Interface의 메소드일 경우에만 사용할 수 있다.
Functional Interface가 아니라면 어떤 메소드를 사용할 것인지 애매하기 때문이다.
Functional Interface라면 Override할 메소드가 하나만 있으므로 명확하다.
익명 메소드를 활용하면 간결하게 표현할 수 있다.
728x90
반응형
'프로그래머스 백엔드 1기 > Java' 카테고리의 다른 글
Java Interface (6) - 제네릭을 이용한 Consumer, Predicate 패턴 (0) | 2021.08.08 |
---|---|
Java Interface (5) - 메소드 레퍼런스 (0) | 2021.08.08 |
Java Interface (3) - 함수형 인터페이스, 익명 클래스 (0) | 2021.08.08 |
Java Interface (2) - Default Method (0) | 2021.08.07 |
Java Interface (1) - 기능 (0) | 2021.08.07 |
댓글