groovy - 字段和属性的重复名称

时间:2014-09-17 15:59:51

标签: groovy

我想了解codehaus page下的'属性和字段规则'部分。

  • 您可以声明属性和同名字段,然后该属性将使用该字段。

这是否意味着我们可以有两个变量,一个私有和其他公共,私有使用公共字段?请参阅下面我尝试过的示例程序。

class Car {
    private def brake
    def brake // when does this get used? if I declare public, it gives compilation error

    protected void setBrake() {
        this.brake = brake
    }       

    static def main(args) {
        Car c = new Car()
        c.setBrake 'abc'    
        println c.brake
    }   
}

1 个答案:

答案 0 :(得分:3)

这就是它的意思。

class Car {
    private def brake

    // Same name property will add getter/setter for the above field
    def brake

    static def main(args) {
        Car c = new Car()
        c.setBrake 'abc' // Use setter   
        println c.getBrake() // Use getter
    }   
}

尝试以上示例评论该属性,您应该看到groovy.lang.MissingMethodException setBrake(),因为它会被属性添加。

页面中的措辞表明,如果您有一个字段(可能是私有的)和一个属性(def制动),那么该属性将为该字段添加访问者方法,而不是创建一个新的私有字段。