Не думаю, что сделал бы так.Это не удастся, если массив на самом деле не "прямоугольный".Я бы сделал что-то вроде:
private Float[][] toFloatArray(float[][] values)
{
Float[][] objArray = new Float[values.length][];
for (int i = 0; i < values.length; i++)
{
objArray[i] = new Float[values[i].length];
for (int j = 0; j < values[i].length; j++)
{
objArray[i][j] = values[i][j];
}
}
return objArray;
}
Вы могли бы быть в состоянии микрооптимизировать, удалив доступ к промежуточному массиву:
private Float[][] toFloatArray(float[][] values)
{
Float[][] objArray = new Float[values.length][];
for (int i = 0; i < values.length; i++)
{
float[] subSource = values[i];
Float[] subDest = new Float[subSource.length];
objArray[i] = subDest;
for (int j = 0; j < subSource.length; j++)
{
subDest[j] = subSource[j];
}
}
return objArray;
}
... но яЯ не удивлюсь, если узнаю, что хорошие JIT могут оптимизировать в любом случае.(Возможно, не для исходного массива, который может меняться за кулисами, конечно ...)