Java中的语法:new Stream<Integer>(){ ... }是什么意思?

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() + ", ");  
}  

这是什么?
3个回答

4

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

从功能上讲,它与以下代码相同:

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

并且

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

但是由于这个类定义在方法体外部没有被使用,所以你可以将其定义为匿名类。


2

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

这段代码创建了一个匿名类的新实例,实现了 Stream<Integer> 接口,包含了一个几乎无限数量的 1。在 Java In A Nutshell 中可以找到更多关于匿名类的信息。


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接