を使用して、ブールに[]ブール値のオブジェクトを変換します[]私はこのようなコードに変換を行うことができますストリーム
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];
}
しかし、私はそれは、Java 8を使用して同じ変換を行うことは可能だと思いましたストリーム。私は次のようなコードを作成します:
boolean[] = Arrays.stream(array)
.map(Boolean.class::cast)
.map(Boolean::booleanValue)
.toArray()
しかし、このコードは動作しません。コンパイラの説明
incompatible types: java.lang.Object[] cannot be converted to boolean[]
私はコードの問題点を理解しようとしています。私はmap(Boolean::booleanValue)
がtoArray
で収集できるブール値のストリームを返すと思います。 map(Boolean::booleanValue)
が
map((Boolean value) -> (Boolean)value.booleanValue());
に展開されますので
'Object []'と 'boolean []'はJavaの型であり、実際には 'Object [] = boolean []'は動作しないので動作しません。 – Jagger
'.toArray()'は一般的なものなので、 'Object []'はあなたが達成できる最高のものです。 'boolean []'を返すように独自のコレクタを書くことができます。 –
@SashaSalauyouしかし、型付き配列を返すために 'toArray(IntFunction ジェネレータ)'を使うことができます。私は例として答えを加えました。 –