Поток классов с использованием 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,

Другие вопросы по тегам