2015-05-27 2 views
6

Насколько я знаю, это используется в следующих ситуациях:Где использовать "this" в java?

  1. this ключевое слово используется, когда мы хотим, чтобы обратиться к переменной экземпляра, имеющей такое же имя, как локальная переменная.
  2. Вызов одного конструктора другому классу.
  3. Передайте экземпляр класса как аргумент метода.
  4. Доступ к внешним переменным класса.

Но я прошел через мой код проекта, где они используют это в добытчиками, как:

class a { 
    int time; 

    int getValue() { 
     return this.time * 5.; 
    } 
} 

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

проблема Stackoverfow называют: When should I use "this" in a class?

+3

'this' относится к экземпляру текущего объекта, поэтому' this.time' означает «свою собственную копию переменных экземпляра». Это необязательно. Многие программисты не используют 'this' при обращении к переменным экземпляра. Однако код @SrinathGanesh - это приятное соглашение для конструкторов. – DavidS

ответ

6

Если у вас есть способ, как следующему:

public void setFoo(Foo foo) { 
    this.foo = foo; 
} 

Использование this является обязательным. В противном случае он присваивает аргумент foo самому себе, а не присваивает его переменной экземпляра.

Но это не значит, что это единственная ситуация, когда вы может использовать this. Следующий код строго эквивалентен:

public void setFoo(Foo newFoo) { 
    this.foo = newFoo; 
} 

Хотя в этом случае, вы можете очень хорошо написать

public void setFoo(Foo newFoo) { 
    foo = newFoo; 
} 

потому this не необходимости больше. Это не делает его незаконным.

Так,

int getValue() { 
    return time * 5; 
} 

и

int getValue() { 
    return this.time * 5; 
} 

строго эквивалентны.

9

Многие люди (я один из них) используют this ключевые слова, даже если это не требуется.

  • Некоторые люди считают, что более ясно поставить this перед всего, что принадлежит к тому же классу, та же логика применяется к super.
  • Некоторые люди всегда используют this рефлектором для лучшего автозаполнения (всплывающее окно появляется автоматически, ленивый программист) в некоторых IDE.

Данные пункты в основном основанное на основании и не имеет значения.

Для других целей, как вы упомянули, его можно использовать для передачи параметра другому конструктору, передать экземпляр класса или отдельный элемент, когда у вас есть две переменные с тем же именем.

Однако, ИМО, проще всего просто не иметь нескольких переменных с тем же именем.

1

Ключевое слово 'this' используется для ссылки на текущий используемый объект ссылки. Это просто используется в качестве синтаксического сахара, чтобы упростить выполнение определенных задач, таких как вызов конструкторов в одном классе, обращение к полям того же класса, типы параметров.

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

public class Foo { 
    public Foo() { this("Hello"); } //Explicit constructor call 
    public Foo(String string) { System.out.print(string); } 
    } 

    public class Bar { 
    public Bar() { new Bar("Hello"); } 
    public Bar(String string) { System.out.print(string); } 
    } 
1

Ключевое слово 'this' часто используется из анонимных классов для ссылки на поля в содержащем классе. Например:

public class App 
{ 
    public String myString = "This is Java"; 
    public App() 
    { 
     JButton button = new JButton("Test"); 
     button.addActionListener(new ActionListener(){ 

     @Override 
     public void actionPerformed(ActionEvent arg0) 
     { 
      System.out.println(App.this.myString); // <-- App.this gives access to public fields in App 
     }}); 
    } 
} 
Смежные вопросы