2011-05-19 27 views
1

有沒有什麼辦法可以在Groovy中爲核心類重新定義asBoolean?我試圖在Groovy中爲數字重寫asBoolean

Number.metaClass.asBoolean = {false}

雖然它適用於非Groovy類我無法找到如何使數量或任何其他預定類同樣的伎倆。

回答

1

我可以在GroovyConsole中執行腳本時重現您的問題。但是,在命令行上作爲.groovy文件執行時,metaClass更改按預期工作。

+0

謝謝,那是我的問題 – Nutel 2011-05-19 17:26:37

1

我想你只是缺少一個->。這適用於我

Number.metaClass.asBoolean = {-> false} 
assert !2.asBoolean() // Normally 2 evaluates to true 
+0

它應該沒有' - >'我認爲... – 2011-05-19 09:23:49

+0

@tim_yates,但如果你省略' - >'那麼你肯定會重載(而不是覆蓋)'asBoolean()'方法Groovy的方法'asBoolean(Object obj)' – 2011-05-19 09:44:51

+0

似乎對我來說任何一種方式...(假設我做'Integer.metaClass',而不是'Number.metaClass') – 2011-05-19 10:34:56