3

我遇到了以下我不认识的 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() + ", ");  
}  

这是什么?

4

3 回答 3

4

这是提供类的内联(匿名)子Stream类。

在功能上,它与以下内容相同:

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

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

但由于此类定义不在方法主体之外使用,您可以将其定义为匿名。

于 2010-02-02T12:47:42.570 回答
2

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

Stream<Integer>分配( 包含几乎无限数量的s的匿名实现的新实例。您可以在Java In A Nutshell1中找到有关匿名类的更多信息

于 2010-02-02T12:48:50.960 回答
0

这是定义一个实现 Stream 接口的匿名类。为了实现接口,我们接下来需要实现方法。

于 2010-02-02T12:49:52.530 回答