次のようなクラスを作成すると:
public class TagManager {
private final Context mCtx;
public TagManager (Context ctx) {
this.mCtx = ctx;
}
}
使用の違いは何ですか
this.mCtx = ctx;
対
mCtx = ctx;
私が知る限り、どちらも同じことをしていますが、それについての議論は見つかりません。
次のようなクラスを作成すると:
public class TagManager {
private final Context mCtx;
public TagManager (Context ctx) {
this.mCtx = ctx;
}
}
使用の違いは何ですか
this.mCtx = ctx;
対
mCtx = ctx;
私が知る限り、どちらも同じことをしていますが、それについての議論は見つかりません。
確かにそれは同じです。それは単なる CodeStyle の問題です。より好きなものを選択するのはあなた次第です。
これを行う唯一の合理的なケース。*は、引数とメンバー変数が同じ名前の場合です。例えば
private final Context ctx;
public TagManager (Context ctx) {
this.ctx = ctx;
}
ただし、Android コード スタイルでは、メンバー変数に m*** プレフィックスを使用するように指示されているため、このような状況がクラスで発生することはめったにありません。
幸運を
インスタンス メソッドまたはコンストラクター内では、これは現在のオブジェクト (メソッドまたはコンストラクターが呼び出されているオブジェクト) への参照です。
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.x
public int x
例では、いいえを参照してくださいint x
このことを考慮:
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
}