Sto avendo un flusso Java 8 di numeri:uso dei consumatori specifici per tipo di elemento con Java 8 flusso
Stream<Number> numbers = ...;
mi piacerebbe iterare il flusso e invocare un consumatore specifico in base al tipo di ciascun elemento. Cioè per Integer
elementi Vorrei richiamare un Consumer<Integer>
, per Long
un Consumer<Long>
ecc
C'è il metodo forEach()
ma questo prevede un Consumer<? super Number>
, richiede che l'attuazione (solitamente un'espressione lambda) per InstanceOf-interruttore del tipo esatto si. ci
numbers.forEach(callbacks -> {
callbacks.on(Integer.class, i -> { /* handle Integer */ });
callbacks.on(Long.class, l -> { /* handle Long */ })
});
è un qualsiasi API esistente che mi avrebbe permesso di registrare un consumatore specifico per elemento flusso sub-tipo in un modo:
In termini di un'API, sto essenzialmente alla ricerca di qualcosa di simile simile a questo?
Non conosco alcuna libreria esistente che faccia esattamente questo, ma in base allo schizzo dell'API che hai fatto, sembra abbastanza facile da implementare. – biziclop
Come soluzione, è possibile scrivere una singola richiamata (magari con un factory built-in) che distribuisce il lavoro al worker appropriato. – BPS
@biziclop, sì, non è difficile da implementare (è quello che ho iniziato, ma poi ho iniziato a chiedermi se sto reinventando la ruota qui). – Gunnar