티스토리 뷰

익명 클래스를 만들어서 처리할 수 있다면, 메소드도 익명으로 만들 수 없을까? 라는 생각을 할 수 있다.

//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
반응형
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함