차이

2012-09-02 5 views
0

나는이처럼 보이는 클래스를 작성하는 경우 :차이

public class TagManager { 
private final Context mCtx; 

public TagManager (Context ctx) { 
    this.mCtx = ctx; 
} 

}

사용의 차이는 무엇을

this.mCtx = CTX ;

mCtx = CTX;

내가 알 수있는 한, 둘 다 똑같은 것을 할 수는 있지만 그것에 대한 논의는 찾을 수 없다.

+1

확인이 http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html을. – Qw4z1

+0

좋은 기사, 감사합니다! – easycheese

+0

변수 및 메서드에서도 동일하므로이 http://stackoverflow.com/a/6547327/1166813 답변을 참조하십시오. – Qw4z1

답변

3

확실히 동일합니다. CodeStyle의 문제 일뿐입니다. 더 좋아하는 것을 선택하는 것은 개발자의 몫입니다.

유일한 합리적인 경우입니다. *은 인수와 멤버 변수의 이름이 같은 경우입니다. 예를 들어,

private final Context ctx; 
    public TagManager (Context ctx) { 
     this.ctx = ctx; 
    } 

그러나 Android 코드 스타일은 멤버 변수에 *** 접두어를 사용하도록 알려주기 때문에 클래스에서이 상황이 발생하지 않는 것이 좋습니다.

인스턴스 메소드 또는 생성자 내 행운

+0

좋은 대답, 고마워. 너에게 *** 접두사 정보를 던져서 너 한테 준거야. :) – easycheese

2

, 는 현재 오브젝트에 대한 참조 - 그 방법 또는 생성자 객체 인 불리는

public class Point { 
    public int x = 0; 
    public int y = 0; 

    //constructor 
    public Point(int x, int y) { 
     this.x = x; 
     this.y = y; 
    } 
} 
이 예에서

this.xpublic int x 아니요 int x

1

이를 고려

public class foo { 
private final int bla = 1; 

public int blabla() { 
    int bla = 2; 
    return bla;//this will return 2 
} 

/

public class foo { 
private final int bla = 1; 

public int blabla() { 
    int bla = 2; 
    return this.bla;//this will return 1 
}