0

メソッド参照を使用してオブジェクトのストリームを作成して返したいのですが、うまくいきません。これは、Promotion がインターフェイスであり、BuyTwoGetThreePromotionImpl によって実装される、私が試している例です。

//This is not working
public Stream<Promotion> getPromotionList() {
    return Stream.of(BuyTwoGetThreePromotionImpl::new);
}

//This is working
public Stream<Promotion> getPromotionList() {
   return Stream.of(new BuyTwoGetThreePromotionImpl());
}

メソッド参照は機能的なインターフェースである必要があると推測できます。これは私のプロモーション オブジェクトです。

4

1 に答える 1

3

Promotionが関数型インターフェースであり、 をBuyTwoGetThreePromotionImpl実装するクラスである場合PromotionBuyTwoGetThreePromotionImpl::newは別のラムダを返すラムダのようなものです。あなたはそれを望んでいません。あなただけが欲しいnew BuyTwoGetThreePromotionImpl()

new BuyTwoGetThreePromotionImpl()全く異なりますBuyTwoGetThreePromotionImpl::new。 最初のものは新しい. 2 つ目は、呼び出されたときに new を生成するラムダです。BuyTwoGetThreePromotionImplBuyTwoGetThreePromotionImpl

于 2016-01-29T17:59:28.307 に答える