【发布时间】:2016-11-15 15:10:43
【问题描述】:
我按照 scala 代码将 (short、int、long、float、double、bigint) 转换为字节数组。
def getByteArray(value: Any, of_type: String) = {
of_type match {
case "short" => ByteBuffer.allocate(2).putShort(value.asInstanceOf[Short]).array()
case "int" => ByteBuffer.allocate(4).putInt(value.asInstanceOf[Int]).array()
case "long" => ByteBuffer.allocate(8).putLong(value.asInstanceOf[Long]).array()
case "float" => ByteBuffer.allocate(4).putFloat(value.asInstanceOf[Float]).array()
case "double" => ByteBuffer.allocate(8).putDouble(value.asInstanceOf[Double]).array()
case "bigint" => BigInt(value.toString).toByteArray
}
}
这一切都需要吗?我是否需要在最后调用任何清理方法,例如
clear()、mark()、reset(),以确保没有 ByteBuffer 泄漏当我使用
allocateDirect方法时,它会抛出以下异常。那么,这是否意味着allocateDirect方法没有后备数组?
线程“main”中的异常 java.lang.UnsupportedOperationException 在 java.nio.ByteBuffer.array(ByteBuffer.java:994)
【问题讨论】:
标签: java scala bytebuffer