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是一个实现类Promotion,那么BuyTwoGetThreePromotionImpl::new就像一个返回另一个 lambda 的 lambda。你不想要那个;你只是想要new BuyTwoGetThreePromotionImpl()

new BuyTwoGetThreePromotionImpl()并且BuyTwoGetThreePromotionImpl::new完全不同。 第一个只是创建一个新的BuyTwoGetThreePromotionImpl. 第二个是一个 lambda,当被调用时,它会生成一个新的BuyTwoGetThreePromotionImpl.

于 2016-01-29T17:59:28.307 回答