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 を含む)の匿名実装の新しいインスタンスを割り当てます1。匿名クラスの詳細については、Java In A Nutshellを参照してください。

于 2010-02-02T12:48:50.960 に答える
0

これは、Stream インターフェイスを実装する Anonymous クラスを定義しています。インターフェイスを実装するには、次にメソッドを実装する必要があります。

于 2010-02-02T12:49:52.530 に答える