Groovy Generics failures

2022-09-03 05:40:11

除了时髦是比java更动态...

为什么这是groovy中的编译时错误(意外标记):<

interface A {
     <T> T getByClass(Class<T> clazz)
}

我如何以时髦的方式写这个?


答案 1

Groovy 解析器不处理以泛型信息开头的方法签名...

如果添加公共修饰符,它将进行解析:

interface A {
  public <T> T getByClass( Class<T> clazz )
}

虽然我不相信你会在编译时获得任何类型检查来添加这个注释


答案 2

只是为了完整性。您可以使用 代替 。结果是相同的,因为默认情况下,groovy 中的方法都是公开的。defpublic

interface A {
  def <T> T getByClass( Class<T> clazz )
}

推荐