Java Groovy中的泛型
下面的Groovy代码显示“它可以工作”Java Groovy中的泛型,java,generics,groovy,Java,Generics,Groovy,下面的Groovy代码显示“它可以工作” def printIt(Class查看此项 […]在某些方面,这与 动态语言的重点在哪里 一般来说,对象的类型不能为空 直到运行时才能确定。但是 Groovy旨在适应Java的 如果可能,静态键入,因此 Groovy 1.5现在也可以理解 话虽如此,Groovy的 泛型支持的目标不是成为 Java泛型的完整克隆。 相反,Groovy的目标是允许泛型 在源代码级别(以帮助减少 和从Java粘贴)以及 允许好的行为是有道理的 Groovy与Java的集成 使
def printIt(Class查看此项
[…]在某些方面,这与
动态语言的重点在哪里
一般来说,对象的类型不能为空
直到运行时才能确定。但是
Groovy旨在适应Java的
如果可能,静态键入,因此
Groovy 1.5现在也可以理解
话虽如此,Groovy的
泛型支持的目标不是成为
Java泛型的完整克隆。
相反,Groovy的目标是允许泛型
在源代码级别(以帮助减少
和从Java粘贴)以及
允许好的行为是有道理的
Groovy与Java的集成
使用泛型的工具和API。[…]
总之,我认为不可能在运行时获得这些信息。因为您知道这应该是一个例外,这在Java(或Groovy)中是有效的:
这绝不会使用泛型信息,但在Java中也不可用。我想知道到底是什么意思:“Groovy目前在源代码级别做得更进一步,丢弃泛型信息”我认为这意味着在groovy中,泛型信息被忽略了。在Java中,泛型信息被删除了,但进行了适当的强制转换和静态类型检查。
def printIt(Class<? extends Exception> clazz) {
println "it works"
}
printIt(String.class)
// true if the class is a subclass of Exception
Exception.class.isAssignableFrom(clazz);