익명클래스,람다식

2020. 1. 28. 15:57모바일/Android_Java

익명클래스

  • Person를 상속받아 처리해야 하는 클래스가 또 필요한 경우, 매번 Child2, Child3… 등등을 만드는 것은 낭비고 불필요한 클래스만 많아진다. 상속받은 클래스가 재사용되면 모를까, 그냥 한번 쓰고 버려진다면 굳이 클래스 파일을 만들 필요는 없다. 이럴 경우에 바로 익명 클래스를 사용하면 된다.실행클래스에서 바로 사용한다고 하면 다음과 같이 하면 된다.
public static void main(String[] args) {
        Person p = new Person() {
            String name = "Kim";
            @Override
            void whoAmI() {
                System.out.println("나는 " + name + " 이다.");
            }
        };
        p.whoAmI();  // 나는 Kim 이다. 
    }

람다와의 관계

  • 익명 클래스 내부에서 전달한 this는 Runnable을 구현한 익명 클래스 그 자체인데 반해 람다 표현식을 썼을 때는 익명 클래스가 아닌 것이다. 람다 표현식 안에서 선언한 this의 타입은 이를 생성한 클래스인 ThisDifference다.
public class ThisDifference {  
    public static void main(String[] args) {
        new ThisDifference().print();
    }
    public void print() {
        Runnable anonClass = new Runnable(){
            @Override
            public void run() {
                verifyRunnable(this);
            }
        };

        anonClass.run();

        Runnable lambda = () -> verifyRunnable(this);
        lambda.run();
    }

    private void verifyRunnable(Object obj) {
        System.out.println(obj instanceof Runnable);
    }
}

출처 : https://d2.naver.com/helloworld/4911107

'모바일 > Android_Java' 카테고리의 다른 글

정규 표현식  (0) 2020.02.07
스택,힙,GC  (0) 2020.01.30
메서드체이닝  (0) 2020.01.28
Headless Fragment  (0) 2020.01.17
findViewById No Use : DataBinding  (0) 2020.01.17