我需要將我的Integer值轉換爲字節數組。爲了不在每次調用我的intToBytes方法時重複創建ByteBuffer,我定義了一個靜態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方法。
W/System.err的:java.nio.BufferOverflowException W/System.err的:在java.nio.ByteArrayBuffer.putInt(ByteArrayBuffer.java:352) W/System.err的:在android.mobile.historian .Data.Convert.intToBytes(Convert.java:136)
在調試模式下,我看到intBuffer的容量是4,正如我對Integer值所期待的那樣。那麼這裏有什麼問題?
聞起來像我過早的優化。你是否證明這個對象的重新創建是你的應用程序的瓶頸?如果沒有,不要擔心它... – 2014-12-02 12:44:15