Acho que nao ha necessidade de criar uma nova interface funcional com o mesmo comportamento da java.util.function.Supplier
.
public class RecordConsumerProvider<K, V> {
public void run(final Supplier<RecordConsumer<K, V>> factory) {
final var recordConsumer = factory.get();
new KafkaConsumerService<>(
recordConsumer.getGroupId(),
recordConsumer.getTopic(),
recordConsumer.getValueType(),
recordConsumer::process
)
.poll();
}
}
No exemplo acima o resultado eh o mesmo e fica mais claro e facil de entender para quem olha o codigo.