2014-02-04 3 views
0

Интересно, что в Android-устройстве не используется 'this'.Android почему бы не использовать 'this'?

Пример,

private String text; 

... 


this.text = "t" // This is java style 
text = "t" // This is reference google android code style 

... 

будет знать, что я делаю неправильно? Если нет, то не используйте это когда-либо задумываясь, почему это происходит.

СПАСИБО.

+1

Это не значит, что вы можете использовать оба варианта, пока это переменная экземпляра. – NarendraSoni

+0

AFAIK, в их стиле кода 'private' переменные начинаются с 'm', как' mDescription' – Geros

+0

'// Это стиль java. Ага. Откуда у вас такая информация? –

ответ

2

Использование этого параметра просто вызывает явный вызов экземпляра. Это необходимо, если вы хотите использовать переменную экземпляра объектов, когда она скрыта локальной переменной. Например:

class MyClass extends Activity { 

    private String text = "myText"; 

    public void printText() 
    { 
     String text = "myText2"; 
     Log.d("MyClass", text); // will print "myText2" to logcat 
     Log.d("MyClass", this.text); // will print "myText" to logcat 
    } 
} 

В этом случае это означает текущий экземпляр MyClass. Вы также можете использовать MyClass.this, например, чтобы получить переменную MyClass-Object внутри объекта внутреннего класса.

Edit:

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

+0

«overlapped» должно быть «скрыто». –

+0

спасибо. im not native english :) плохое изменение – danijoo

+0

Я это знаю. но мой вопрос: «Будет ли это правильно писать« это »? Связанная с вами ссылка? Спасибо, ответ :) – ShakeJ

1

В не-Android Java, this чаще встречается, поскольку имена переменных часто совпадают с именами параметров. Примеры:

public class Test1 { 

    private String text; 

    public static void main(String[] args) { 
     Test1 test = new Test1(); 
     test.setText("foobar"); 
     //... 
    } 

    public void setText(String text) { 
     this.text = text; 
    } 
} 

В Android, однако, учат использовать имена переменных, таких как mString, дифференцированы эти глобальные переменные из местных. Тот же самый код выше, будет выглядеть следующим образом на Android:

public class Test2 extends Activity { 

    private String mString; 

    @Override 
    public void onCreate(BundleSavedInstanceState) { 
     setText("foobar"); 
    } 

    public void setText(String string) { 
     mString = string; 
    } 
} 

В конце концов, однако, - это как раз о том, что разработчик комфортно. Если вы создадите чистый, рабочий, читаемый код, продолжайте это делать. Если нет, рассмотрите следующие рекомендации. Например, я пишу много Android-кода каждый день, но я предпочитаю использовать синтаксис, описанный в первом примере.

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