“Groovy”是什么意思;作为「;运算符是否在运行时为用户定义的类创建子类?
在Groovy中,当我在Groovy脚本中编写以下代码时“Groovy”是什么意思;作为「;运算符是否在运行时为用户定义的类创建子类?,groovy,coercion,Groovy,Coercion,在Groovy中,当我在Groovy脚本中编写以下代码时 class Emp { public String getId() { return "12345"; } } def coercedInstance = [ getId: { "99999" } ] as Emp println new Emp().getId() println coercedInstance .getId() 在这里使用as操作符,我是否在运行时创建实
class Emp {
public String getId() {
return "12345";
}
}
def coercedInstance = [
getId: {
"99999"
}
] as Emp
println new Emp().getId()
println coercedInstance .getId()
在这里使用as操作符,我是否在运行时创建实际Emp类的子类,并在运行时提供方法体
我看过其他关于堆栈溢出的文章,并且了解到Groovy使用DefaultGroovyMethods.java和DefaultTypeTransformation.java来执行强制。但无法确定它是否是子类化的 是,一个
as
操作符创建一个类型为目标类的子类的对象。使用生成(在内存中)扩展给定基类的代理类
class-Emp{
公共字符串getId(){
返回“12345”;
}
}
def强制状态=[
getId:{
"99999"
}
]作为Emp
断言(Emp的强制实例)
断言(强制状态.class!=Emp)
断言(Emp.isAssignableFrom(impressedInstance.class))
println-impressedInstance.dump()//
具体来说,您的情况如下:
方法转到执行asType
ProxyGenerator.INSTANCE.InstanceAggregateFromBaseClass(map,clazz)代码>
- 在下一步中,将创建对象
- 在最后一步中,调用get以返回新生成的类,该类是基类的代理