Я хотел бы создать класс enum с BiConsumer в качестве параметра конструктора.Если я сделал это так, все работает нормально
public enum BiConsumerEnum {
BI_CONSUMER(((Integer i, String s) -> Collections.nCopies(i, s).forEach(System.out::println)));
private BiConsumer<Integer, String> biConsumer;
public static void main(String[] args) {
BiConsumerEnum.BI_CONSUMER.accept(3, "X");
}
BiConsumerEnum(BiConsumer<Integer, String> biConsumer) {
this.biConsumer = biConsumer;
}
public void accept(Integer i, String s) {
this.biConsumer.accept(i, s);
}
}
Но если изменить код на это:
public enum BiConsumerEnum {
BI_CONSUMER((Integer i, String s) -> printString());
// main(), constructor and accept()
private static BiConsumer<Integer, String> printString() {
return (Integer i, String s) -> Collections.nCopies(i, s).forEach(System.out::println);
}
Код не работает должным образом, и я получил предупреждение: возвращаемое значение никогда не используется
Как извлечь метод из конструктора, вместо того, чтобы писать целую лямбду внутри?