您好我有以下代码片段;
class StringCalci
{
static def plus(Integer self, Integer Operand)
{
return self.toInteger() * Operand.toInteger()
}
}
use (StringCalci)
{
println("inside the Use method!")
println( 12 + 3 )
}
println(12+3)
我很震惊地看到Use
在groovy中的使用。问题是我可以在运行时向我的方法添加方法(我自己的方法)。当我看到上面的代码时,我在思考Groovy如何使这样的事情成为可能!在println
中使用Use
会将两个给定的数字相乘(因为我已覆盖plus
方法),而外部println
会添加它!我的问题是Groovy如何识别println
和Use
之外的println
执行Use
。 Use
是关键字/方法吗?我需要了解这个过程的幕后..请让我知道:)
在此先感谢:)
答案 0 :(得分:5)
欢迎来到动态语言的精彩世界,凡一切皆有可能,无所谓!
此功能称为Categories。至于实施:
use
实际上不是关键字,而是Groovy运行时adds to the Object
class的一种方法,它可以在任何地方使用。ThreadLocal
中保留覆盖方法的映射,然后为每个方法调用查询。