“怎么做?”;使用「;在groovy工作?
嗨,我有下面的代码片段“怎么做?”;使用「;在groovy工作?,groovy,Groovy,嗨,我有下面的代码片段 class StringCalci { static def plus(Integer self, Integer Operand) { return self.toInteger() * Operand.toInteger() } } use (StringCalci) { println("inside the Use method!") println(
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中的使用,我感到震惊。问题是我可以在运行时向类添加方法(我自己的方法)!在use
中使用println
是将两个给定的数字相乘(因为我已经覆盖了plus
方法),其中作为外部println
的加法!我的问题是Groovy如何识别在Use
中执行的println
以及Use
之外执行的println
。Use
是关键字/方法吗?我需要了解这个过程的幕后情况。。请让我知道:)
提前感谢:)欢迎来到动态语言的奇妙世界,在这里一切皆有可能,没有什么是确定的 此功能称为。至于实施:
实际上不是一个关键字,而是Groovy运行时使用的一种方法,它使它在任何地方都可用use
- 我认为功能主要是在类中实现的
- 从Javadoc判断,它基于在
中保留重写方法的映射,然后为每个方法调用查询该映射ThreadLocal
- 是的,这对性能来说不是很好,但是Groovy和类似语言提供的几乎所有动态“神奇”特性也是如此(而且有很多)李>
println
甚至没有被触动-只有+
被重载。@Delnam:ya加号被重载了。。但是我想知道如何使用使这成为可能!您是否考虑过阅读文档?@Micheal:谢谢您的回复:)答案在ThreadLocal
中,现在将搜索此文档了解更多信息:)@Micheal:从您的答案来看,ThreadLocal
是java语言(一种静态类的功能,其中每个线程都有一个编号)groovy在哪些方面利用了它,为了实现使用,我说的对吗?@Aussies:听起来不错。但是请注意,我实际上只是在猜测如何实现它,因为GroovyCategorySupport的javadoc提到了“本地线程上下文”。