有沒有什麼辦法可以在Groovy中爲核心類重新定義asBoolean?我試圖在Groovy中爲數字重寫asBoolean
Number.metaClass.asBoolean = {false}
雖然它適用於非Groovy類我無法找到如何使數量或任何其他預定類同樣的伎倆。
有沒有什麼辦法可以在Groovy中爲核心類重新定義asBoolean?我試圖在Groovy中爲數字重寫asBoolean
Number.metaClass.asBoolean = {false}
雖然它適用於非Groovy類我無法找到如何使數量或任何其他預定類同樣的伎倆。
我可以在GroovyConsole中執行腳本時重現您的問題。但是,在命令行上作爲.groovy
文件執行時,metaClass更改按預期工作。
我想你只是缺少一個->
。這適用於我
Number.metaClass.asBoolean = {-> false}
assert !2.asBoolean() // Normally 2 evaluates to true
它應該沒有' - >'我認爲... – 2011-05-19 09:23:49
@tim_yates,但如果你省略' - >'那麼你肯定會重載(而不是覆蓋)'asBoolean()'方法Groovy的方法'asBoolean(Object obj)' – 2011-05-19 09:44:51
似乎對我來說任何一種方式...(假設我做'Integer.metaClass',而不是'Number.metaClass') – 2011-05-19 10:34:56
謝謝,那是我的問題 – Nutel 2011-05-19 17:26:37