Утверждение метода java начинается с: 'return new' (Путаница относительно анонимных классов) - PullRequest
2 голосов
/ 15 марта 2012

Почему метод начинается с «return new»?

public Iterator<T> iterator() {  
    return new Iterator<T>() {  
        ...
    }
}

Ответы [ 3 ]

4 голосов
/ 15 марта 2012

Это создает экземпляр класса (фактически он создает подкласс класса, как @biziclop прикинул) и возвращает его. Обычно это используется в классах типа «Фабрика», а именно:

public static Button createButton(int x, int y, String label){
     return new Button(x,y,label){
         void onClick(){
          ...
         }
     }
}

/* .... */
Button b = Toolkit.createButton(20,20,"Hello!");
3 голосов
/ 15 марта 2012

Метод iterator() возвращает тип Iterator<T>, поэтому метод должен иметь оператор return, за которым следует объект типа Iterator<T>.

new Iterator<T>() {  
    ...
}

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

2 голосов
/ 15 марта 2012

То, что вы видите, это метод public Iterator<T> iterator(), который возвращает новый анонимный экземпляр внутреннего класса, а не метод.Путаница понятна, если вы никогда раньше не видели анонимных внутренних классов.

Вот небольшая информация об анонимных классах в Java.

...