我之前正在使用一些SQL让我想知道这两种类型之间有什么区别。
在我的示例中,我有2个GroovyRowResults - pastData和currentData。现在,我需要比较这些结果集中的2个点。这些值都应该是不确定的类型。因此,在定义它们时,
之间的区别是什么def pastResult = pastData[commonKey]
def currentResult = currentData[commonKey]
if(pastResult == currentResult){
doSomething()
}
和
T pastResult = pastData[commonKey]
T currentResult = currentData[commonKey]
if(pastResult == currentResult){
doSomething()
}
答案 0 :(得分:1)
我假设先前已在您的方法/类中声明了handleClick(e) {
this.refs[this.props.name].focus();
return this.props.onClick(this.props.name);
}
。在这种情况下,它是generic而T
一致地引用相同类型的对象,而T
基本上只是def
的别名。
T不保证两个对象是完全相同的类(它们可能只是实现相同的接口,或者可能是一个子类),它确实在您正在处理的对象中创建了更多的契约。如果将相同类型的对象传递给方法,则没有区别,但如果传递不同或意外的类型,则更有用。
换句话说,在Groovy中,它是为了可读性和一致性而做的,使用泛型比使用动态类型要好得多。
答案 1 :(得分:0)
我不认为第二个例子会起作用,除非有某种叫做T的对象。检查这个链接 http://groovy-lang.org/semantics.html#_variable_definition