Я использую scala-код для преобразования (short, int, long, float, double, bigint) в байтовый массив.Преобразование чисел (short, int, long, float, double, bigint) в массив байтов: Scala/Java
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
не имеет вспомогательного массива?
Исключение в потоке "основного" java.lang.UnsupportedOperationException в java.nio.ByteBuffer.array (ByteBuffer.java:994)