BuyTwoGetThreePromotionImpl

BuyTwoGetThreePromotionImpl

我想使用方法Refernece创建和返回对象流,但是它对我不起作用。这是我尝试的示例,其中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());
}


我可以猜到方法引用必须是我的促销对象所需要的功能接口。

最佳答案

如果Promotion是功能接口,并且BuyTwoGetThreePromotionImpl是实现Promotion的类,则BuyTwoGetThreePromotionImpl::new就像一个返回另一个lambda的lambda。你不想要那个您只想要new BuyTwoGetThreePromotionImpl()

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

07-28 00:29