天天看點

Groovy裡的繞過getter方法直接通路類屬性的辦法

代碼:

package jerry;

class SomeGroovyClass {

    def field1 = 'ha'
    def field2 = 'ho'

    def getField1() {
        return 'getHa'
    }
}

def a = new SomeGroovyClass()
println a.field1
println a.field2

println '------------------------------'
println a.metaClass.getAttribute(a, 'field1') 
println a.metaClass.getAttribute(a, 'field2')      

如果直接用執行個體.屬性名的文法通路屬性,如果針對某屬性定義了getter方法,則通路該屬性時,getter方法會自動被觸發。

參見上面代碼橫線之前的列印内容。

如果想繞過getter方法,使用執行個體的metaClass.

Groovy裡的繞過getter方法直接通路類屬性的辦法

繼續閱讀