Вы можете опустить getClass
и использовать оператор типа (:
):
val byteBuffer = array(0) match {
case _: Int =>
ByteBuffer.allocate(4 * array.length)
case _: Long =>
ByteBuffer.allocate(8 * array.length)
case _: Float =>
ByteBuffer.allocate(4 * array.length)
case _: Double =>
ByteBuffer.allocate(8 * array.length)
case _: Boolean =>
ByteBuffer.allocate(1 * array.length)
}
Также обратите внимание, что match
является выражением в Scala, поэтому вы можете перемещаться byteBuffer
снаружи и присвойте ему результат. Такой функциональный подход сделает его чище и позволит нам избежать переназначения на var
и использовать вместо него val
.
Если вы хотите использовать переменную, с которой сопоставляется тип, то вы можете просто написать для пример l: Long
и использовать переменную типа Long
с именем l
.