如何使用Java中的泛型返回数字?

前端之家收集整理的这篇文章主要介绍了如何使用Java中的泛型返回数字?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个类似下面的类,但我有一个关于使用泛型返回值的问题.
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;
    }
}

等等

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

原文链接:https://www.f2er.com/java/122131.html

猜你在找的Java相关文章