Java がボックス化/ボックス化解除すると、ユーザーに表示されなくても、実際には何かを実行します。
Long[]
とlong[]
は非常に異なるオブジェクトです。答えは、いいえ、ループしてコピーする必要があるということです。しかし、より良い質問は、なぜこれが必要なのですか? ほとんどすべての状況でそれらを交換可能に使用できます...実装時に、オブジェクトの作成とメモリの使用のどちらがより重要かを決定する必要があります。うまくいけば、Java の値のキャッシングを使用するために s (またはオートボクシング) をLong.valueOf
作成するために使用します。Long
Long
これはapache common langのソースですArrayUtils.toPrimitive
。ループを使用しています。
public static long[] toPrimitive(Long[] array) {
if (array == null) {
return null;
} else if (array.length == 0) {
return EMPTY_LONG_ARRAY;
}
final long[] result = new long[array.length];
for (int i = 0; i < array.length; i++) {
result[i] = array[i].longValue();
}
return result;
}