groovy泛型:在超类上调用方法。键入擦除

时间:2013-04-23 20:26:51

标签: generics groovy super type-erasure

我无法理解为什么以下Groovy代码无法编译

@groovy.transform.CompileStatic
class GenericTest<T extends String> extends TreeSet<T> {

    public boolean add2(T key) {
        return super.add(key)
    }
}

它告诉我

  

[静态类型检查] - 无法调用   带有参数的java.util.TreeSet #add(java.lang.Object)   [java.lang.String]

我知道它必须是与类型擦除相关的东西,但我无法弄明白。

类似的java代码编译没有问题

import java.util.TreeSet;

public class GenericTest2<T extends String> extends TreeSet<T> {

    public boolean add2(T val){
        return super.add(val);
    }
}

0 个答案:

没有答案