如何使用Java中的泛型返回数字?
发布时间:2020-12-14 05:33:38 所属栏目:Java 来源:网络整理
导读:我有一个类似下面的类,但我有一个关于使用泛型返回值的问题. import java.util.ArrayList;public class BoxT extends Number { private ArrayListT list; public Box(){ list = new ArrayListT(); } public T get(int i){ if(i list.size()) return list.get
我有一个类似下面的类,但我有一个关于使用泛型返回值的问题.
import java.util.ArrayList; public class Box<T extends Number> { private ArrayList<T> list; public Box(){ list = new ArrayList<T>(); } public T get(int i){ if(i <list.size()) return list.get(i); else return 0; // Problem } } 当i <1时,我必须得到0(或0.0 - 取决于T的值) list.size()不为空.如何正确地编码这样做? 解决方法
如果你真的要默认返回0,你可以这样做:
public abstract class Box<T extends Number> { private List<T> list; public Box(){ list = new ArrayList<T>(); } public T get(int i){ if(i <list.size()) return list.get(i); else return getDefault(); } protected abstract T getDefault(); } 然后为您要支持的每个Number子类有一个实现,例如 public class IntegerBox extends Box<Integer> { @Override protected Integer getDefault() { return 0; } } 和 public class DoubleBox extends Box<Double> { @Override protected Double getDefault() { return 0D; } } 等等 一个很好的特点是它可以返回任何默认值,而不仅仅是零…并且相同的原理对任何类型的对象而言都不起作用,而不仅仅是数字. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |