我有这个通用功能:
public static T sum(List list){
Number tot = 0;
for(Number n: list){
tot = tot.doubleValue() + n.doubleValue();
}
return (T)tot;
}
回想一下这段代码的主要内容:
public static void main(String[] args) {
ArrayList listInt = new ArrayList<>();
listInt.add(3);
listInt.add(5);
listInt.add(6);
listInt.add(8);
System.err.println("Sum: " + Calcolatrice.sum(listInt))
}
因此,我希望(作为listInt是一个整数的ArrayList),函数sum返回的值是T = Integer,在这种情况下,给我一个从Double到Integer的转换错误.
结果的类型是Double,不会抛出任何错误.
演员(T)tot没有所需的结果.
我想这是因为Java处理泛型站点阶段,但有人知道更好地解释为什么它以这种方式工作?