【发布时间】:2021-09-26 02:03:04
【问题描述】:
我目前正在学习泛型,首先我创建了一个用整数创建 stackArrayList 的类,之后我希望它被每个数字使用,所以我确实将数字放在方法中的任何地方,它有点工作但我认为这并不完全正确,我最大的问题是我不能对班级编号使用任何加法或减法。
所以我尝试实现 N extends Number 但这也不起作用,因此我什至不能将从方法 pop() 返回的 Number 放入变量中,告诉我 pop() 必须返回一个然后 int。
有人可以向我解释一下,我在那里做了什么吗?我能理解它背后的逻辑,但不能完全理解它。
public class StackArrayList<N extends Number> {
private ArrayList<N> stackList = new ArrayList<>();
public void push (N value) {
if(value == null) {
System.out.println("value null not allowed");
return;
}
stackList.add(0,value);
}
public N pop() {
N popInt = stackList.get(0);
stackList.remove(0);
return popInt;
}
public N addFirstTwo() {
if(stackList.size()==1) {
return stackList.get(0);
}
if (stackList.size() == 0) {return null;}
if(stackList.get(0) instanceof Integer) {
N summe;
summe =
push(summe);
return summe;
}else if(stackList.get(0) instanceof Double){
summe = pop().doubleValue()+pop().doubleValue();
push(summe);
return summe;
}else if(stackList.get(0) instanceof Float){
summe = pop().floatValue()+pop().floatValue();
push(summe);
return summe;
}else if(stackList.get(0) instanceof Long){
summe = pop().longValue()+pop().longValue();
push(summe);
return summe;
}
push(summe);
return summe;
}
}
【问题讨论】:
标签: java list class generics extends