假设我从第三方库获得以下Java类:
width
使用以下代码public class Itm {
public final Map<String, String> properties = ['foo': 'bar']
}
,我希望获得一张地图:println new Itm().properties
但是结果是:
[class:class Itm]
我意识到,如果我在Groovy中创建相同的类,但是在没有[[foo:bar]]
修饰符的情况下声明properties
字段,则会得到预期的结果。但是我使用的类具有public
访问修饰符。因此,在这种情况下,如何访问public
而不是默认Groovy的public
的{{1}}字段?
答案 0 :(得分:2)
您可以使用Groovy的direct field access operator obj.@field
。该运算符使用getter方法省略,并直接访问object字段。假设我们有以下Java类:
Itm.java
import java.util.HashMap;
import java.util.Map;
public class Itm {
public final Map<String, String> properties = new HashMap<String,String>() {{
put("foo", "bar");
}};
}
以及以下使用它的Groovy脚本:
println new Itm().@properties
输出为:
[foo:bar]