我有Java类,如
class Test {
private String field1;
}
字符串
没有其他方法或getter和setter。
在一个很棒的脚本中,我有:
def test = new Test()
test.field1 = "foobar"
型
并且即使字段是私有的,并且没有定义getter/setter,这也是有效的。它是如何工作的?
该项目是一个java项目,groovy脚本通过GroovyShell
执行,因此Test
类由java编译(groovy未添加任何方法)。
谢谢你的帮忙。
1条答案
按热度按时间o2rvlv0m1#
Groovy使用Reflection API来访问字段,所以这里没有真实的的“隐私”。看看这个question,人们讨论得更详细。也检查这个article。