2016-03-24 2 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? 
    } 
} 

Я использовал возврат x; стиль в моем коде до сих пор, и мне было интересно, если использовать return this.x; при условии каких-либо преимуществ или если это было чисто для удобочитаемости/ясности. Мои извинения, если это кажется расплывчатым или запутанным, я действительно не знаю, как еще это сказать.При ссылке на приватную переменную вам нужно объявление this.variableName?

+2

Почему бы вам не попробовать? Также почему вы называете 'this();'? –

+0

У меня было несколько вещей в классе предустановок, которые я не включил в фрагмент кода, потому что это было не очень актуально. И я всегда делал это так, как он просто «возвращает x;», но заметил, что многие люди делают this.x вместо этого и задаются вопросом, есть ли какая-то польза. –

ответ

2

Рассмотрим setX(int x), чтобы неоднозначность между параметром x и поле x вам нужно будет написать что-то вроде

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

В противном случае (если x не shadowed), то вам не нужно укажите this (это неявный).

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

Общеизвестно, что люди используют локальную переменную с тем же именем, что и частная переменная, или это то, чего обычно избегают? –

+1

@JavaTheHutt Я бы сказал, что это не редкость с мутаторами; но тогда также не редкость видеть, как руководства по стилю рекомендуют, чтобы вы * всегда * использовали 'this.x' при доступе к полю. –

2

Нет. Вы должны просто иметь возможность использовать return x;. Единственная причина, по которой вы должны технически использовать this.x, - это если у вас была локальная переменная x.

Смежные вопросы