是否可以判断 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
有没有办法判断 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