posso fare la conversione con codice come questo:convertire un oggetto [] di booleani per un valore booleano [] utilizzando flussi
Object[] array = (Object[]) message.get(key);
boolean[] result = new boolean[array.length];
for (int i = 0; i < array.length; i++) {
result[i] = (boolean) array[i];
}
Ma, ero pensare che è possibile fare la stessa conversione utilizzando Java 8 flussi. Inizio a codificare qualcosa del genere:
boolean[] = Arrays.stream(array)
.map(Boolean.class::cast)
.map(Boolean::booleanValue)
.toArray()
Ma questo codice non funziona. Compilatore dice
incompatible types: java.lang.Object[] cannot be converted to boolean[]
Sto cercando di capire qual è il problema con il codice. Penso che map(Boolean::booleanValue)
restituirebbe un flusso di valori booleani che posso raccogliere con toArray
.
Questo non funzionerà perché 'Object []' e 'boolean []' sono tipi in Java che non sono convertibili, quindi in realtà 'Object [] = boolean []' non funzionerà neanche. – Jagger
'.toArray()' qui è generico, quindi 'Object []' è il meglio che puoi ottenere. Puoi scrivere il tuo raccoglitore per restituire 'booleano []'. –
@SashaSalauyou È tuttavia possibile utilizzare 'toArray (IntFunction generator)' per restituire un array tipizzato. Ho aggiunto una risposta come esempio. –