目前,我正在使用Scala语言,我不知道如何确定泛型类型。 我有一个类如下代码。
class A[K, V]() {
def print(): Unit = {
//Check the real type here
}
}
我想做的是:
It is an Integer
It is a Long
It is a String
答案 0 :(得分:1)
您可以使用TypeTag[T]
。来自documentation:
TypeTag [T]封装了某种类型T的运行时类型表示。
示例代码:
import scala.reflect.runtime.universe._
class A[K: TypeTag, V]() {
def print(): Unit = typeOf[K] match {
case i if i =:= typeOf[Int] => println("It is an Integer")
case _ => println("Something else")
}
}
测试代码:
val a = new A[Int, String]
val b = new A[Double, String]
a.print()
b.print()
印刷结果:
It is an Integer
Something else
答案 1 :(得分:0)
在编写泛型类时,您应该只关注对提供的值执行公共/泛型操作。但是,如果您真的想要进行某种类型检查,可以使用asInstanceOf方法执行此操作。
您需要修改类似下面的打印方法。
def print(k: K) = {
if (k.isInstanceOf[Int]) println("Int type")
else if ...
}