gpt4 book ai didi

java - 如何在 Java 中使用泛型返回一个数字?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:45 24 4
gpt4 key购买 nike

我有一个像下面这样的简单类,但我对使用泛型返回值有疑问。

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 < list.size() 不是 null 时,我必须 得到 0(或 0.0 - 这取决于 T 的值)。我该如何正确编码才能做到这一点?

最佳答案

如果您真的想默认返回 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();
}

然后为您要支持的每个数字子类型实现一个实现,例如

public class IntegerBox extends Box<Integer> {

@Override
protected Integer getDefault() {
return 0;
}
}

public class DoubleBox extends Box<Double> {

@Override
protected Double getDefault() {
return 0D;
}
}

等等

它的一个很好的特性是它可以返回任何默认值,而不仅仅是零......同样的原则适用于任何类型的对象,而不仅仅是数字。

关于java - 如何在 Java 中使用泛型返回一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16742683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com