2010-02-02 67 views
3

我遇到了以下我不认识的Java语法。Java中的语法意味着什么:new Stream <Integer>(){...}?

这部分是好的:

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

这是提供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接口,为了实现接口,我们需要实现下面的方法。