发布
社区首页 >问答首页 >是否可以判断一个类是用Java和Scala实现的呢?

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

Stack Overflow用户
提问于 2015-01-08 16:13:29
回答 1查看 135关注 0票数 3

是否有一种方法可以判断类是否在Scala中实现?

我正在为JVM构建一个序列化系统,它广泛地处理反射。Java类已经被处理过了,但是对于Scala类来说,这种方法是不够的(例如,在Scala中,ListInt在Java的反射系统中变成了ListObject,但是这种丢失的信息可以通过scala的反射恢复)。说我是否应该对类执行scala特定的处理就像一个开关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-08 17:07:56

代码语言:javascript
代码运行次数:0
复制
def isJavaClass( cls: Class[_] ): Boolean = {
  import scala.reflect.runtime.{universe=>ru}
  val sym = ru.runtimeMirror(cls.getClassLoader).classSymbol(cls)
  sym.isJava
}

REPL测试:

代码语言:javascript
代码运行次数:0
复制
scala> isJavaClass(classOf[List[Any]])
res0: Boolean = false

scala> isJavaClass(classOf[java.util.List[Any]])
res1: Boolean = true
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27844601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档