2016-11-24 7 views
-1

MyFragment.this.mFragmentmFragment의 차이점은 무엇입니까? 나는Classname.this.memberName vs memberName

if (mFragment instanceof SecondFragment) { if (MyFragment.this.mFragment instanceof SecondFragment) { some code... } }

스튜디오는 오류를 이야기하지 않는 내부 클래스에서이 검사를 시도했다, 그 두 번째 검사가 항상 참 부모 클래스

private Fragment mFragment; 

의 회원이있다. 왜?

+0

첫 번째 경우가 true이면 두 번째 경우도 마찬가지입니다. :-) –

+0

부모님의 회원을 보는 데 차이가 있습니까 ?? –

+0

내 대답보기 –

답변

0

귀하의 경우에 차이가 없을 수 있습니다. 그것은 상황에 달려 있습니다. mFragment instanceof SecondFragment은 현재 클래스의 인스턴스 변수 (멤버)를 참조합니다. MyFragment의 일부 메소드 내에서 코드 스 니펫을 사용한다고 가정합니다.

MyFragment.this.mFragment도 작동하지만 내부 클래스에서도 작동합니다. 이들은 명시 적 내부 클래스 (동일한 .class 파일의 다른 클래스)와 익명의 내부 클래스, 청취자 등이 될 수 있습니다. 사용해야하는 곳은 다음과 같습니다. MyFragment.this.mFragment

0

.class 파일을 디 컴파일하여 확인하십시오. 내부 클래스에서 사용할 수있는 참조를 찾아 외부 클래스 동작에 액세스 할 수 있습니다.