List中的add(T)不能应用于Java.lang.Number

Sal*_*kci 2 java generics collections

我正在尝试制作一个只能包含Numbers的通用List.当我尝试向其添加一个Integer时,它会出现以下错误.

List中的add(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));        
    }
}
Run Code Online (Sandbox Code Playgroud)

是什么导致了这个问题?

Era*_*ran 9

一个List<T>地方T extends Number可以是一个List<Number>,一个List<Integer>,一个List<Double>,等...

你不能添加IntegerList<Double>.因此编译错误.

如果您希望能够将任何Number实例添加到该列表,只需将其定义为

private List<Number> records;
Run Code Online (Sandbox Code Playgroud)

这意味着您不需要泛型类型参数T.