Что означает синтаксис в Java: новый поток <Integer>() {...}? - PullRequest
3 голосов
/ 02 февраля 2010

Я столкнулся со следующим синтаксисом Java, который я не распознаю.

Эта часть в порядке:

public abstract class Stream<T> implements Iterator<T> {  
   public boolean hasNext() {  
      return true; }  
   public void remove() {  
      throw new RuntimeException("Unsupported Operation"); }  
}  

Но этого я не понимаю:

Stream<Integer> ones = new Stream<Integer>() {  
   public Integer next() {  
      return 1; }  
};   

while(true){  
  System.out.print(ones.next() + ", ");  
}  

Что это?

Ответы [ 3 ]

4 голосов
/ 02 февраля 2010

Предоставляет встроенный (анонимный) подкласс класса Stream.

Функционально он такой же, как:

public NewClass extends Stream {
    public Integer next() {  
       return 1; 
    }  
}

и

void someMethodInAnotherClass {
    Stream stream = new NewClass();
}

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

2 голосов
/ 02 февраля 2010

ones = new Stream<Integer>() {<br> public Integer next() {<br> return 1; }<br> };

Назначает новый экземпляр анонимной реализации Stream<Integer> (который содержит практически неограниченное количество 1 с. Вы можете найти больше информации об анонимных классах в Java в двух словах

0 голосов
/ 02 февраля 2010

Это определение класса Anonymous, который реализует интерфейс Stream.Для реализации интерфейса нам нужно реализовать метод далее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...