簡體   English   中英

java泛型編譯錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM