2015-07-04 3 views
0

Сегодня я изучил шаблон Итератора, но я не совсем понял код кода. Не могли бы вы мне помочь?Java. Ключевое слово <this>. Iterator pattern

Вот класс:

public class Repository implements Container{ 
    public String[] names = {"John", "Iren", "Anthony", "Lorn"}; 

    @Override 
    public Iterator getIterator() { 
     return new MyIterator(); 
    } 
    private class MyIterator implements Iterator { 
     int index; 
     @Override 
     public boolean hasNext() { 
      if (index < names.length) { 
       return true; 
      } 
      return false; 
     } 

     @Override 
     public Object next() { 
      if (this.hasNext()) { 
       return names[index++]; 
      } 
      return null; 
     } 
    } 
} 

И главный метод:

public static void main(String[] args) { 
     Repository name = new Repository(); 
     for (Iterator iter = name.getIterator(); iter.hasNext();) { 
      String local = (String) iter.next(); 
      System.out.println("Name = " + local); 
     } 
    } 

Речь идет о методе next():

 @Override 
     public Object next() { 
      if (this.hasNext()) { 
       return names[index++]; 
      } 
      return null; 
     } 

I don`t понять смысл ключевое слово в этом контексте. Это ссылка для чего?

ответ

1

Ключевое слово this - это ссылка на объект, который нестатический метод находится внутри. Здесь this находится внутри метода next() объекта MyIterator, таким образом this является ссылкой на объект MyIterator. Обратите внимание, что в прилагаемом коде вы можете опустить this. и просто написать if(hasNext()) {...}.

0

этот является ссылкой переменной, которая относится к текущему объекту

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

Посмотрите Java doc и here

0

это ключевое словом в Java является специальным ключевым словом, которое может быть использовано для представления текущего объекта или экземпляра любого класса в Java. «Это» ключевое слово может также вызвать конструктор одного класса в Java и использовать для вызова перегруженного конструктора.

«это» иногда ассоциируется с супер ключевым словом, которое используется для обозначения экземпляра суперкласса в Java и может использоваться для вызова перегруженного конструктора в Java.

--> this keyword represent current instance of class. 



--> this keyword can be used to call overloaded constructor in java. if used than it must be first statement in constructor this() will call no argument constructor and this(parameter) will call one argument constructor with appropriate parameter. here is an example of using this() for constructor chaining: 


Example 


"this" keyword to call constructor in Java 

class Student{ 
    private int id; 
    private String name; 

    public Student(){ 
     this(“Student of the year”); 
    } 

    public Student(int id){ 
     this.id = id; 
     this.interest = 0.0; 
    } 
} 


If member variable and local variable name conflict, this can be used to refer member variable. 

Example #2 

    public Student(int id, double name){ 
     this.id = id; 
     this.name = name; 
    } 


this is a final variable in Java and you can not assign value to this. 

this = new Student(); //this will result in compilation error--cannot assign value to final variable : this 

Or you can call methods of class by using this keyword 
Example #3 

    public String getName(){ 
     return this.toString(); 
    } 

Or this can be used to return object. this is a valid return value. 
Example #4 

public Student getStudent(){ 
return this; 
} 

В вашем случае, я думаю, что «это» может представлять собой текущее хранилище объектов содержат имена строк массива, который имеет Джон, Ирен, Энтони, Лорна, как слово/строка в каждом elements.And «this.hasnext() «вернет true, когда итерация имеет больше значений, а это означает, что если в вашем текущем массиве объектов все еще есть слова, он будет продолжать отображать имена человека на экране. Иначе он выберет блок «if» и вернется к нулевому.