加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何使用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;
    }
}

等等

一个很好的特点是它可以返回任何默认值,而不仅仅是零…并且相同的原理对任何类型的对象而言都不起作用,而不仅仅是数字.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读