我想使用方法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
。