【发布时间】:2011-02-04 09:10:26
【问题描述】:
我有以下通用类:
public class GenericClass<E,T extends Comparable<T>>
{
public static <E, T extends Comparable<T>> GenericClass<E, T> create()
{
return new GenericClass<E, T>();
}
private GenericClass()
{
}
}
这就是我简单地使用它的方式:
GenericClass<MyClass, Double> set = GenericClass.create();
Eclipse 编译没有显示错误,但是 - 使用 ant 构建会提供以下错误:
MyClass.java:19: incompatible types; no instance(s) of type variable(s) E,T exist so that GenericClass<E,T> conforms to GenericClass<MyClass,java.lang.Double>
[javac] found : <E,T>GenericClass<E,T>
[javac] required: GenericClass<MyClass,java.lang.Double>
[javac] GenericClass<MyClass, Double> set = GenericClass.create();
谢谢!
【问题讨论】:
-
而 SortedSetByDoubleValue 是...?
-
已修复...为简单起见,我更改了类名
-
我的建议是不要在静态方法 create 和类中为泛型类型使用相同的名称。虽然它在技术上是合法的,但它可能会导致一些难以发现的疯狂错误。我强烈建议在整个 create() 定义中用 E2 和 T2(或其他)替换 E,T。
-
为了获得子类的最佳结果,边界应为
T extends Comparable<? super T>
标签: java generics compiler-errors