模式匹配取决于 Class

Pattern matching depends on Class

我有以下代码:

val obj: Int = 5;
var objType: Class[_] = obj.getClass

objType match {
          case _: Int =>
            byeBuffer.putInt(asInstanceOf[Int])

          case _: Long =>
            byeBuffer.putLong(asInstanceOf[Long])

          case _: Float =>
            byeBuffer.putFloat(asInstanceOf[Float])

          case _: Double =>
            byeBuffer.putDouble(asInstanceOf[Double])

          case _: Boolean => {
            val byte = if (asInstanceOf[Boolean]) 1 else 0
            byeBuffer.put(byte.asInstanceOf[Byte])
          }

          case default => throw new UnsupportedOperationException("Type not supported: " + default.getClass)
}

此代码已损坏。但是,如果我使用 obj 而不是 objType 那么它就可以工作。但我想在模式匹配中专门使用 objType。

尝试

val intClass     = classOf[Int]
val longClass    = classOf[Long]
val floatClass   = classOf[Float]
val doubleClass  = classOf[Double]
val booleanClass = classOf[Boolean]

objType match {
  case `intClass`     => 

  case `longClass`    => 

  case `floatClass`   => 

  case `doubleClass`  => 

  case `booleanClass` => 
}