-9

私は理由または原理を求めています。 java8の "Stream"はどのように機能しますか?

私はJava8のインターフェイス「ストリーム」のほとんどのメソッドは、「デフォルト」として宣言されていないことがわかったので、彼らは一例body.For何のメソッドを持っていない:

ブールanyMatch(述語述語)。

ブールallMatch(述語述語);

ストリームマップ(ファンクションマッパー)。

ソースファイルStream.javaで確認できます。

しかし、体のないこれらのメソッドは、Javaプログラムで実行できるようです。

あなたはその理由を知っていますか?

ありがとうございます。

+11

です。インタフェースをインスタンス化することはできません。これは基本的にインターフェイスがどのように動作するかについての基本的な質問です... – Moira

+2

多かれ少なかれ、 'interface'ですか? –

+3

'stream()'メソッドの実装を見てみると、数秒で完了できます。 – luk2302

答えて

5
abstract class ReferencePipeline<P_IN, P_OUT> 
    extends AbstractPipeline<P_IN, P_OUT, Stream<P_OUT>> 
    implements Stream<P_OUT> ... 

これを実装するのはReferencePipelineです。 `stream()`から得られるストリームは `Stream`の具体的な実装、つまり` ReferencePipeline`のいくつかのサブクラスなので、

@Override 
public final boolean anyMatch(Predicate<? super P_OUT> predicate) { 
    return evaluate(MatchOps.makeRef(predicate, MatchOps.MatchKind.ANY)); 
} 
+0

ありがとう、お友達! jdkソースにReferencePipeline が見つかりました。しかし、それは奇妙なことにOracleのWebサイトの公式のJava APIドキュメントには見つかりません。 – xuange

+3

@ xuange公開されていないため、そこには記載されていません。 – Moira

関連する問題