안녕하세요. 

안드로이드의 소스 보다보면 좀  의아한 부분들이 있는데요.
동작에는 이상이 없겠지만  왜 이렇게 했을 까 하는 것이 있습니다.

class 의   멤버 변수를 

private WeakReference<Launcher> mLauncher;

이렇게 선언 하고, 

생성자에서   혹은   멤버함수에서 

       void setLauncher(Launcher launcher) {
            mLauncher = new WeakReference<Launcher>(launcher);
        }

이렇게  설정합니다.


정작 이 변수를 사용하는 곳에서  

            if (mLauncher != null) {
                final Launcher launcher = mLauncher.get();
                if (launcher != null) {
                    launcher.loadWallpaper();
                }
            }

위와 같이 사용하던데요. 

mLauncher 가    Launcher 클래스의 인스턴스 인데요.   이것  WeakReference 라서 이렇게 쓰는 것인가요? 

            if (mLauncher != null) {
                    mLauncher.loadWallpaper();
            }


이렇게 수정하면 문제가 되나요?
이렇게 수정하면 

        대입 연산  하나 줄고,    get() 함수 호출 줄고,   비교문 하나 줄기 때문에

실제로는  더 빠른 수행이 가능한거 아닌가요?


이런식의 코딩이  java의 특징인지요?

감사합니다.