如何访问称为“属性”的公共班级成员?

时间:2018-12-04 15:25:22

标签: groovy

假设我从第三方库获得以下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}}字段?

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]