Мне нужно преобразовать значение Integer в массив байтов. Чтобы не создавать ByteBuffer снова и снова при каждом вызове моего метода intToBytes, я определил статический ByteBuffer.Преобразование int в байтовый массив BufferOverflowException
private static ByteBuffer intBuffer = ByteBuffer.allocate(Integer.SIZE/Byte.SIZE);
public static byte[] intToBytes(int Value)
{
intBuffer.order(ByteOrder.LITTLE_ENDIAN);
intBuffer.putInt(Value);
return intBuffer.array();
}
Я получаю BufferOverflowException при запуске метода intToBytes.
Вт/System.err: java.nio.BufferOverflowException Вт/System.err: в java.nio.ByteArrayBuffer.putInt (ByteArrayBuffer.java:352) Вт/System.err: в android.mobile.historian .Data.Convert.intToBytes (Convert.java:136)
В режиме отладки я вижу, что емкость intBuffer равна 4, как я ожидал для своего значения Integer. Так что тут не так?
Запахи как преждевременная оптимизация для меня. Вы доказали, что воссоздание этого объекта является узким местом в вашей заявке? Если нет, не беспокойтесь об этом ... –