是否可以判断 class 是否在 Java 与 Scala 中实现?

Is it possible to tell if a class is implemented in Java vs. Scala?

有没有办法判断 class 是否在 Scala 中实现?

我正在为广泛处理反射的 JVM 构建序列化系统。 Java classes 已经被处理,但该方法不适用于 Scala classes(例如,在 Scala 中,List[Int] 在 Java 中变成 List[Object]'的反射系统,但这种丢失的信息可以通过 Scala 的反射来恢复)。它就像一个开关,说我是否应该对 class.

执行特定于 scala 的处理
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