使用 Java 反射检查 Groovy 对象属性
我有一个 Expando 类,我需要从 Java 检查它的属性。 在 Groovy 中:
def worker = new Expando()
worker.name = "John"
worker.surname = "Doe"
在 Java 中:
Introspector.getBeanInfo(groovyObject.getClass())
是否可以在运行时从 Groovy 中的对象编译类?
I have an Expando class which I need to inspect its properties from Java.
In Groovy:
def worker = new Expando()
worker.name = "John"
worker.surname = "Doe"
In Java:
Introspector.getBeanInfo(groovyObject.getClass())
Is it possible to compile at runtime the class from the object in Groovy?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Expando 是完全动态的。它不生成任何字节码 getter 或 setter,因此不能用作 JavaBean。你需要使用 bean introspector 来做什么?如果您用 Groovy 编写该逻辑,则可以直接使用 Expando 来实现该逻辑。
The Expando is completely dynamic. It does not generate any bytecode getters or setters and therefore cannot be used as a JavaBean. What do you need to use the bean introspector for? You may be able to implement that logic using the expando directly if you write it in Groovy.
您可以尝试使用 Groovy 的 JSR 223 / 脚本引擎(示例 )如果您使用的是 Java 6。它允许您从 Java 评估 Groovy 代码。
根据 Expando 的位置/定义,您可能可以通过计算
getProperties()
来获取其属性(从 Groovy 1.7 开始)。You might try the JSR 223 / Script engine with Groovy (example here) if you are using Java 6. It allows you to evaluate Groovy code from Java.
Depending on the location/definition of the Expando, you might be able to get its properties by evaluating
getProperties()
(as of Groovy 1.7).