使用Scala反射和Java反射
作为DSL的一部分,我有很多代码使用
Java反射来调用
Java对象上的任意用户指定方法.
但是,实际上很多Java对象都是Scala对象,它们上的一些方法都标有Scala @deprecated注释.不幸的是,Java的注释机制无法看到Scala注释,直到Scala 2.10没有方便的方式(我知道?)才能访问这些注释. 我最终升级到2.10,并希望能够从我的DSL发出弃用警告.但是,我不想重写整个评估器(至少现在)使用Scala反射,所以有一种方便的方法从java.lang.reflect.Method到我可以使用Scala反射到的东西弄清楚有问题的Scala方法是否已被弃用?或者,在获取该信息之前,我是否必须使用Scala反射复制许多现有的方法解析逻辑? 它看起来像Scala反射中曾经存在的JavaToScala类,它有一个methodToScala方法,它做了我想要的.在谷歌代码项目中,我能找到的唯一迹象是here.为什么功能移出核心反射?或者它仍然以不同的名称存在? 编辑:看起来有问题的代码存在于scala.reflect.runtime.JavaMirrors中,但不幸的是它是私有的(还有另一个JavaMirrors是公共API的一部分,但不提供我需要的任何东西.)我可以如果有通过公共API调用的“路径”,那么我就会想到我的生活,这会让我一直到私有方法AsScala深埋在私有JavaMirrors中.令人沮丧的是,至少可以说:( 解决方法
这是一个快速修复(@EugeneBurmako的信用)
https://gist.github.com/xeno-by/5277805 已经为此提出了一个问题(@MysteriousDan的信用额度): https://issues.scala-lang.org/browse/SI-7317 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |