[英]java generics compilation error
我有以下通用類:
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();
謝謝!
嘗試使用此:
GenericClass<String, Double> set = GenericClass.<String,Double>create();
Eclipse編譯器和javac的容限不同。
您的表達式GenericClass.create()
沒有類型指示,因此編譯器無法推斷E和T的真實類型。您需要更改函數的原型以幫助編譯器。
最簡單的方法是傳遞類。
例:
public class GenericClass<E,T extends Comparable<T>> {
public static <E, T extends Comparable<T>> GenericClass<E, T> create(Class<E> e, Class<T> t) {
return new GenericClass<E, T>();
}
private GenericClass() {
}
}
GenericClass<MyClass, Double> set = GenericClass.create(MyClass.class, Double.class);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.