DBILITY

android java interface lambda vs anonymous reference 'this' meaning 본문

android/java

android java interface lambda vs anonymous reference 'this' meaning

DBILITY 2024. 11. 14. 11:34
반응형

여러 언어를 사용하다 보면 기본을 잊어 버리고(손가락만 기억하는) 코딩이 자주 있다.

거기다 안드로이드 같은 경우라면 eventHandler구현 시 그러한 경우들이 잦다.

람다 표현식 내에서 this는 람다 표현식이 정의된 외부 클래스의 인스턴스를 참조하며, 익명 클래스와의 주요 차이다.
익명 클래스에서는 this가 해당 클래스의 인스턴스를 참조하지만, 람다 표현식에서는 외부 클래스의 인스턴스를 참조합니다.
class Outer {
    private String name = "Outer";

    void lambdaClass() {
        // 람다 표현식 생성
        Runnable r = () -> {
            System.out.println(this.name); // Outer 클래스의 name을 참조
        };
        r.run();
    }
}
class Outer {
    private String name = "Outer";

    void anonymousClass() {
        // 익명 클래스 생성
        Runnable r = new Runnable() {
            private String name = "Anonymous";

            @Override
            public void run() {
                System.out.println(this.name); // 익명 클래스의 name을 참조
                System.out.println(Outer.this.name); // Outer 클래스의 name을 참조
            }
        };
        r.run();
    }
}

 

반응형
Comments