2016-04-23 2 views
0

Я знаю, что делает this и зачем это полезно - вопрос this сделал отличную работу по его объяснению. Однако в выбранном ответе они использовали this, чтобы также назначать параметры. Делает лииспользуя «this.field = value» vs «field = value»

private int aNumber; 

public void assignVal(int aNumber){ 
    this.aNumber = aNumber; 
} 

имеет любое преимущество перед этим?

private int aNumber; 

public void assignVal(int aVal){ 
    aNumber = aVal; 
} 
+2

Нет, это строго и точно то же самое. Разница между ними - вопрос мнения. – Tunaki

+0

Я не вижу проблемы с производительностью на обоих. – Priyamal

+0

'this.' используется для указания только ** COMPILER ** (байт-код сгенерирован одинаково) о том, что вы хотите адресовать, я поддержал этот вопрос, так как я не понимаю, почему он должен быть -1 его действительным вопросом. преимущество первого метода заключается в том, что вы сохраняете согласование имен переменных. обычной практикой является использование немного другого имени, такого как 'number' и' Number', чтобы избежать использования 'this.number'. это ужасная практика (которую я иногда допускаю :)). – n00b

ответ

1

Там нет производительности или других очевидных преимуществ для использования this.aNumber vs. просто aNumber, кроме, возможно, ясности, к которому объект экземпляр по aNumber принадлежит. В основном это зависит от предпочтений.

При использовании только aNumber подразумевается префикс this.

Возможным преимуществом и случаем, когда использование this становится необходимым, является то, что у вас есть метод, в котором аргумент передается методу, который имеет то же имя, что и переменная экземпляра класса. В этом случае необходимо префикс переменной экземпляра класса this, чтобы «выбрать» подходящее свойство для доступа.

Например, если у вас есть класс и метод, объявленный как:

class ThisExample{ 
    private int aNumber; 

    public void setANumber(int aNumber){ 
     //Here is is necessary to prefix with 'this' to clarify 
     //access to the class instance property 'aNumber' 
     this.aNumber = aNumber; 
    } 
} 
0

Это означает, что вы не должны выяснить, 2 имена переменных, которые относятся к одной вещи. Это немного читаемо и делает так, чтобы ваши переменные всегда описывали значение.

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