Groovy脚本和Java类不带getter和setter和私有字段,它如何访问字段?

uurv41yg  于 10个月前  发布在  Java
关注(0)|答案(1)|浏览(80)

我有Java类,如

class Test {

   private String field1;
}

字符串
没有其他方法或getter和setter。
在一个很棒的脚本中,我有:

def test = new Test()

test.field1 = "foobar"


并且即使字段是私有的,并且没有定义getter/setter,这也是有效的。它是如何工作的?
该项目是一个java项目,groovy脚本通过GroovyShell执行,因此Test类由java编译(groovy未添加任何方法)。
谢谢你的帮忙。

o2rvlv0m

o2rvlv0m1#

Groovy使用Reflection API来访问字段,所以这里没有真实的的“隐私”。看看这个question,人们讨论得更详细。也检查这个article

相关问题