2016-12-02 106 views
-1

我有一個非常簡單的接口:實施時Incompatibe返回類型錯誤通用接口方法

public interface Evaluateable<T> { 
    public T evaluate(); 
} 

我想實現在另一大類evaluate()方法:

public class NumberNode() implements Evaluateable { 
    public double evaluate() { // Error with this method 
     return 5.0; 
    } 
} 

但是顯然評估()有一個'不兼容的返回類型',儘管接口方法是通用的。我在構造泛型方法錯誤 - 這裏發生了什麼?

在此先感謝。

+4

您不能將基元類型用作泛型類型。 'T'型擦除到'對象' – 4castle

+1

@ 4castle,看起來像是對我的回答(有解釋)......沒關係,有人回答。 –

回答

2

你沒有指定類型的通用的,你不能使用原始double(但你可以使用Double包裝類型)。

public class NumberNode() implements Evaluateable<Double> { 
    public Double evaluate() { 
     return 5.0; 
    } 
} 
+0

啊,太棒了。謝謝,我知道這將是一個簡單的解決方案。 – user3668541