我有一个Groovy课:

class SomeGroovyThing {
    String name
}

在Java中,我收到对该类的实例作为对象的引用:
Object o = project.getExtensions().getByName("groovyThing")

我无法转换对象,因为我无法访问Java中的Groovy类(出于不相关的原因)。如何检索name属性的值(即我想做o.name,但显然不起作用)。

我想进行某种形式的反射,但是我的对象是Groovy类的事实正在使事情陷入困境。

最佳答案

您可以使用反射来做到这一点。

你可以的:

String name=(String)o.getClass().getField("name").get(o);

或设置它:
o.getClass().getField("name").set(o,name);

如果nameprivate,则可以使用setter / getter方法(在getMethod()中为Class)设置或获取它,或在setAccessible(true)上使用Field

关于java - 从Java中的未知Groovy类访问字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57900031/

10-16 17:27
查看更多