首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合使用Scala反射和Java反射

结合使用Scala反射和Java反射
EN

Stack Overflow用户
提问于 2013-03-30 06:01:34
回答 1查看 1.3K关注 0票数 9

我有很多代码一直在使用Java反射来调用Java对象上用户指定的任意方法,这是DSL的一部分。

然而,在实践中,这些Java对象中有很多是Scala对象,它们上的一些方法用Scala @deprecated注释进行了标记。不幸的是,Java的注解机制不能看到Scala注解,而且在Scala2.10之前没有方便的方法(据我所知?)才能访问这些注释。

我终于升级到了2.10,并且希望能够从我的DSL发出弃用警告。但是,我不想重写整个计算器(至少现在)来使用Scala反射,所以有没有一种方便的方法可以从java.lang.reflect.Method转换成我可以使用Scala反射的东西,以确定有问题的Scala方法是否被弃用?或者,我是否必须使用Scala反射复制大量现有的方法解析逻辑,然后才能获得该信息?

它看起来像是一个曾经存在于Scala反射中的JavaToScala类,里面有一个methodToScala方法,可以做我想要的事情。我能找到的唯一踪迹是谷歌代码项目中的here。为什么要将功能移出核心反射?或者它仍然以不同的名字存在?

编辑:看起来有问题的代码仍然存在于scala.reflect.runtime.JavaMirrors中,但不幸的是它是私有的(还有另一个JavaMirrors是public API的一部分,但没有提供我需要的任何东西)。我怎么也想不出是否有一条通过公共API进行调用的“路径”,它会把我一直带到隐藏在私有methodAsScala中的私有JavaMirrors。这是令人沮丧的,至少可以这么说:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-03 07:01:19

这里有一个快速解决方案(致谢@EugeneBurmako)

https://gist.github.com/xeno-by/5277805

这个问题已经提交了(致谢@MysteriousDan):

https://issues.scala-lang.org/browse/SI-7317

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15712097

复制
相关文章

相似问题

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