是否可以判断一个类是用Java还是Scala实现的?

时间:2015-01-08 16:13:29

标签: scala

有没有办法判断是否在Scala中实现了一个类?

我建立在JVM的序列化系统上,广泛应对反射。已经处理了Java类,但该方法不适用于Scala类(例如,在Scala List [Int]中转换为Java反射系统中的List [Object],但这些丢失的信息可以通过scala来恢复。反射)。它就像是说我是否应该执行特定于scala的类处理。

1 个答案:

答案 0 :(得分:5)

def isJavaClass( cls: Class[_] ): Boolean = {
  import scala.reflect.runtime.{universe=>ru}
  val sym = ru.runtimeMirror(cls.getClassLoader).classSymbol(cls)
  sym.isJava
}

REPL测试:

scala> isJavaClass(classOf[List[Any]])
res0: Boolean = false

scala> isJavaClass(classOf[java.util.List[Any]])
res1: Boolean = true