在Groovy中重写数字的asBoolean

在Groovy中重写数字的asBoolean,groovy,Groovy,有没有办法在Groovy中为核心类重新定义为Boolean?我试过了 Number.metaClass.asBoolean={false} 虽然它适用于非Groovy类,但我找不到如何对Number或任何其他预定义类使用相同的技巧。我认为您只是缺少了一个->。这对我有用 Number.metaClass.asBoolean = {-> false} assert !2.asBoolean() // Normally 2 evaluates to true 在GroovyConsole中

有没有办法在Groovy中为核心类重新定义为Boolean?我试过了

Number.metaClass.asBoolean={false}


虽然它适用于非Groovy类,但我找不到如何对Number或任何其他预定义类使用相同的技巧。

我认为您只是缺少了一个
->
。这对我有用

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

在GroovyConsole中执行脚本时,我可以重现您的问题。但是,当在命令行上作为
.groovy
文件执行时,元类更改会按预期工作。

@tim_yates但是如果省略
->
,那么肯定会重载(而不是重写)groovy使用
asBoolean(Object obj)方法定义的
asBoolean()
方法
对我来说似乎都很管用。。。(假设我使用的是
Integer.metaClass
,而不是
Number.metaClass