java - Java反射有通用的 "back-end"库吗

标签 java reflection dynamic invoke

我目前正在使用一种用 Java 实现的专门的解释性编程语言。作为该语言的一小部分,我想添加调用 Java 的能力。在我深入探讨反射的所有细节之前,我想知道是否有人知道用于执行反射式调用 Java 代码的“后端”部分的通用库。

也就是说,我将一个字符串(我定义了语法)解析为一些表示 Java 方法调用(或构造函数或字段访问)的数据结构,然后将该数据结构传递给调用该调用并返回结果。特别是,我希望它能够处理所有我不想弄清楚的边缘情况:

  • 根据参数类型自动选择正确的方法(如智能 Class.getDeclaredMethod())
  • 处理数组和普通对象引用之间的区别
  • 等等

我花了一些时间研究动态语言在 JVM 上的实现,但这些通常比我正在寻找的要复杂得多,或者针对特定语言进行了高度优化。

另一种选择是将我的语法转换成某种动态语言的字符串,然后用 Rhino 或其他东西调用它,但这比我正在寻找的开销要多一些。

最佳答案

只是对您自己的回答发表评论;实际上,beanutils 支持在给定一组参数的情况下获得“接近匹配”。参见 getMatchingAccessibleMethod()

BeanUtils 非常强大,有很多用于检查类的实用方法。同样的支持自然适用于构造函数。

关于java - Java反射有通用的 "back-end"库吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/364523/

相关文章:

c# - 将 C# DynamicObject 转换为任意类型

c# - 是否可以在动态/ExpandoObject 上创建通用方法

java - 无法运行 JFlex 生成的词法分析器 Java 文件

java - 如果我有一个需要文件路径的构造函数,如果它被打包到一个 jar 中,我怎么能 "fake"呢?

java - 如何在 Spring Security 中撤销授权 token ?

scala - 如何使用反射获取默认构造函数参数?

c# - 项目的加载程序集

java - 使用反射 : java. reflection.Constructor.newInstance()

hibernate - JPA/Hibernate 中的动态排序?

java - 为什么日期选择器会意外触发 JComboBox 的 actionPerformed?