2017-10-17 34 views
2

我想製作一個只能包含數字的泛型列表。當我嘗試向它添加一個Integer時,它會給出以下錯誤。在列表中添加(T)不能應用於Java.lang.Number

在列表中添加(T)不能應用於java.lang.Number中

public class QueryHelper<T extends Number> { 

    private List<T> records; 

    public void query(QueryTypes queryType) { 
     records = new ArrayList(); 
     records.add((Number)new Integer(90));   
    } 
} 

是什麼原因造成這個問題?

+1

'Integer'和'T'可能都是'Number's,但這並不意味着'Integer'是'T'。 –

回答

8

一個List<T>,其中T extends Number可以是List<Number>,一個List<Integer>,一個List<Double>,等...

您不能添加IntegerList<Double>。因此編譯錯誤。

如果你希望能夠到任何Number實例添加到列表中,簡單地把它定義爲

private List<Number> records; 

這意味着你將不再需要泛型類型參數T

相關問題