如果你真的要默认返回0,你可以这样做:
public abstract class Box {
private List list;
public Box(){
list = new ArrayList();
}
public T get(int i){
if(i
return list.get(i);
else
return getDefault();
}
protected abstract T getDefault();
}
然后为您要支持的每个Number子类有一个实现,例如
public class IntegerBox extends Box {
@Override
protected Integer getDefault() {
return 0;
}
}
和
public class DoubleBox extends Box {
@Override
protected Double getDefault() {
return 0D;
}
}
等等
一个很好的特点是它可以返回任何默认值,而不仅仅是零…并且相同的原理对任何类型的对象而言都不起作用,而不仅仅是数字.