Поток классов с использованием Java 8
Я хочу создать и вернуть поток объектов, используя метод 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());
}
Я могу предположить, что ссылка на метод должна быть функциональным интерфейсом, которым являются мои объекты продвижения.
1 ответ
Если Promotion
это функциональный интерфейс, и BuyTwoGetThreePromotionImpl
это класс, реализующий Promotion
, затем BuyTwoGetThreePromotionImpl::new
это как лямбда, которая возвращает другую лямбду. Вы не хотите этого; ты просто хочешь new BuyTwoGetThreePromotionImpl()
,
new BuyTwoGetThreePromotionImpl()
а также BuyTwoGetThreePromotionImpl::new
совершенно разные. Первый просто создает новый BuyTwoGetThreePromotionImpl
, Второй лямбда, который при вызове генерирует новый BuyTwoGetThreePromotionImpl
,