我有一个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);
如果
name
是private
,则可以使用setter / getter方法(在getMethod()
中为Class
)设置或获取它,或在setAccessible(true)
上使用Field
。关于java - 从Java中的未知Groovy类访问字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57900031/