小编And*_*nov的帖子

<T extends SuperClass> 的 Groovy 泛型问题

class TestClass <T extends SuperClass>{
 public List<T> doSmth(){
    ///....
    List testObjects = []
    testObjects.add(new T(arg))
   return testObjects;
 }
}

class SuperClass{

}
class A extends SuperClass{
 A(Arg arg){
  ....
}
class B extends SuperClass{
 B(Arg arg){
  ....
}

////////test
class Main{
 List <A> a
 List <B> b

 Main(){
  this.a = new TestClass<A>().doSmth()
  this.b = new TestClass<B>().doSmth()
 }
}
Run Code Online (Sandbox Code Playgroud)

在线发现异常(groovy.lang.GroovyRuntimeException: 找不到 SuperClass 的匹配构造函数)

 testObjects.add(new T(arg))
Run Code Online (Sandbox Code Playgroud)

这是非常正确的,因为 SuperClass 没有构造函数。但是子类有一个并且它们都具有相同的签名,arg 具有相同的类型。

有人可以帮我找到解决问题的方法吗?

generics groovy

5
推荐指数
1
解决办法
1184
查看次数

标签 统计

generics ×1

groovy ×1