2013-12-26 5 views
0

Есть ли другое использование this ключевого слова, кроме доступа к переменной-члена с тем же именем, как локальная переменнаяИспользование «этого» оператора в Java

this.x = x

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

+6

FYI, 'this' является ключевым словом, а не оператором. – DaoWen

+0

Спасибо за исправление. –

ответ

9

Одно другое использование this ключевое слово находится в конструкторе цепочки, например:

class Person { 

    private String name; 
    private int age; 

    public Person() { 
     //Invoking another constructor 
     this("John", 35); 
    } 

    public Person(String name, int age) { 
     this.name = name; 
     this.age = age; 
    } 
} 
+0

Большое спасибо. Это то, что я узнал сегодня, и это то, что я искал. –

6

Вы можете передать текущий объект в качестве параметра другому методу.

3

this представляет текущий экземпляр внутри экземпляра.

Это полезно для:

  • идентифицирующего переменного экземпляра из местных (в том числе параметров)
  • он может быть использован сам по себе, чтобы просто сослаться на переменные и методы, вызывать другие конструктор перегрузку.
  • см. Пример .

Некоторые примеры применимых использования (не является исчерпывающим):

class myClass 
{ 
    private int myVar; 

    public myClass() { 
      this(42); // invoke parameterized constructor of current instance 
    } 

    public myClass(int myVar) { 
     this.myVar = myVar; // disambiguate 
    } 

    public void another() { 
      this.second(); // used "just because" 
    } 

    private void second() { 
      System.out.println("whatever"); 
    } 

} 
4

Ниже точек были взяты из Java docs

  1. Наиболее распространенной причиной для использования this ключевое слово, потому что поле является затененный параметром метода или конструктора.
  2. Внутри конструктора вы также можете использовать ключевое слово this для вызова другого конструктора в том же классе.
2

Вы можете ссылаться на поле или вызвать метод объемлющей класса

public class Examples { 
    public class ExamplesInner { 
     private int x; 
     public ExamplesInner() { 
      x = 3; // refers to ExamplesInner.x 
      Examples.this.x = 3; // refers to Examples.x 
     } 
    } 

    private int x; 
} 

For full usage, read the java language specification

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

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

Тип этого класса C, в котором это ключевое слово встречается.

Во время выполнения класс фактического объекта называется может быть класса C или любой подкласс C.

Ключевое слово этого также используется в специальном явного конструктора заявления вызова, который может появиться в начале тела конструктора (§8.8.7).

+0

Разве 'x' не был бы здесь? Может быть, вы хотели сделать это затененным полем? – DaoWen

+0

@DaoWen Это обычно делается неявным конструктором. Но в этом случае он обнаружил бы тенистые поля. –

2
  • Это ключевое слово может использоваться для ссылки на текущую переменную экземпляра класса.
  • this() может использоваться для вызова текущего конструктора классов.
  • это ключевое слово может использоваться для вызова текущего метода класса (неявно)
  • это может быть передается в качестве аргумента в вызове метода.
  • это может быть передано как аргумент в вызове конструктора.
  • это ключевое слово также может использоваться для возвращает текущий экземпляр класса.

примеры находим отсюда: http://javarevisited.blogspot.in/2012/01/this-keyword-java-example-tutorial.html

0

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

Оператор this может быть использован для вызова конструктора, как this()

Оператор this также избегает именований неясностей и может использоваться для передачи текущего объекта в качестве ссылки на функцию

0

this позволяет неоднозначность между частный член foo и параметр foo перешел в constructor: EX

class bar 
{ 
    private int foo; 
    public Foo(int foo) 
    { 
     this.foo =foo; 
    } 
} 
Смежные вопросы