2016-03-24 11 views
0
public class sample { 
    private int x = 3; 
    public sample() {} 
    public sample(int num) { 
     this(); 
     x = num; 
    } 

    public int getX() { 
     // should I use return this.x; or just return x;? Does it matter which one? 
    } 
} 

Ich habe die Rückkehr x verwendet; Stil in meinem Code bis jetzt, und ich frage mich, ob mit this zurückgeben.x; irgendwelche Vorteile zur Verfügung gestellt, oder wenn es nur für die Lesbarkeit/Klarheit war. Meine Entschuldigung, wenn das vage oder verwirrend erscheint, weiß ich nicht wirklich, wie ich es sonst noch formulieren soll.Wenn Sie auf eine private Variable verweisen, benötigen Sie die This.VariableName-Deklaration?

+2

warum versuchst du es nicht? Warum nennst du 'this();'? –

+0

Ich hatte ein paar Sachen in der Preset-Klasse, die ich nicht in das Code-Snippet aufgenommen hatte, weil es nicht wirklich relevant war. Und ich habe es immer nur so gemacht, wo es nur "x zurückgibt", aber ich habe bemerkt, dass viele Leute das this.x stattdessen tun und sich gefragt haben, ob es irgendeinen Nutzen gibt. –

Antwort

2

setX(int x) Betrachten, um zwischen dem Parameter x und dem Feld eindeutig zu machen x man braucht so etwas wie

public void setX(int x) { 
    this.x = x; 
} 

Ansonsten schreiben (wenn die x nicht shadowed ist), dann brauchen Sie nicht zu Spezifizieren Sie this (es ist implizit).

public int getX() { 
    return x; // <-- same as return this.x; 
} 
+0

Ist es üblich, dass Personen eine lokale Variable mit dem gleichen Namen wie eine private Variable verwenden, oder wird das normalerweise vermieden? –

+1

@JavaTheHutt Ich würde sagen, es ist nicht ungewöhnlich mit Mutatoren; Es ist aber auch nicht unüblich zu sehen, dass Styles Guides empfehlen, * this.x' immer beim Zugriff auf ein Feld zu verwenden. –

2

Nein. Sie sollten nur return x; verwenden können. Der einzige Grund, warum Sie this.x technisch verwenden sollten, ist, wenn Sie eine lokale Variable x in der Methode hatten.