【问题标题】:How to define private getter method in Groovy Bean?如何在 Groovy Bean 中定义私有 getter 方法?
【发布时间】:2010-09-29 08:10:16
【问题描述】:

我使用了以下代码。

class Bike{
 def manufacturer;

 private getManufacturer(){
  manufacturer
 }

}

但我可以从另一个类调用 getter 方法。

【问题讨论】:

    标签: groovy javabeans


    【解决方案1】:
    【解决方案2】:

    我创建了一个编译器扩展,它允许您选择性地或全局地应用编译时检查是否违反封装。此外,您可以在编译时强制执行强类型检查和不变性检查。 https://github.com/stansonhealth/ast-framework

    一个例子:

                package com.stansonhealth.ast.encapsulate
                import com.stansonhealth.ast.encapsulate.Encapsulate
    
                @Encapsulate
                class TestEncapsulationFixture {
                    private int i
                }
                
                class TestEncapsulation {
                    void foo(TestEncapsulationFixture fixture) {
                        fixture.i++
                        fixture[i]++
                        fixture.i = 0
                        def x = fixture.i
                    }
                }
    

    编译器输出:

    startup failed:
    TestEncapsulation: 14: Field or property "i" not accessible for class = com.stansonhealth.ast.encapsulate.TestEncapsulationFixture
     @ line 14, column 21.
                           fixture.i++
                           ^
    
    TestEncapsulation: 15: Field or property "i" not accessible for class = com.stansonhealth.ast.encapsulate.TestEncapsulationFixture
     @ line 15, column 21.
                           fixture[i]++
                           ^
    
    TestEncapsulation: 16: Field or property "i" not accessible for class = com.stansonhealth.ast.encapsulate.TestEncapsulationFixture
     @ line 16, column 21.
                           fixture.i = 0
                           ^
    
    TestEncapsulation: 17: Field or property "i" not accessible for class = com.stansonhealth.ast.encapsulate.TestEncapsulationFixture
     @ line 17, column 29.
                           def x = fixture.i
                                   ^
    
    4 errors
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-27
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多