如何在 Arraylist< 中添加一个整数?扩展号码>?
How to add an Integer in Arraylist<? extends Number>?
我正在尝试使用扩展 Number Class 的通配符将 Integer 添加到 Arraylist。编译器给我一个错误。我不知道如何解决这个问题。
import java.util.ArrayList;
public class WildCard {
ArrayList<? extends Number> an;
public WildCard() {
an = new ArrayList<Integer>();
}
public void addI(Integer a) {
an.add(a);
}
public static void main(String[] args) {
WildCard w = new WildCard();
Integer b = 3;
w.addI(b);
}
}
就这样,你可以添加整数。
ArrayList<Number> an;
而不是
ArrayList<? extends Number> an
将通配符 ?
更改为 T
:
public class Test <T extends Number> {
ArrayList<T> an;
public Test(){
an = new ArrayList<T>();
}
public void addI(T a){
an.add(a);
}
public static void main(String[]args){
Test<Number> w = new Test<>();
Integer b = 3;
w.addI(b);
Test<Integer> w2 = new Test<>();
Integer b2 = 32;
w2.addI(b2);
}
}
不可能。
这就是通配符的意思。
你在问:“我如何找到这个圆的角?” - 或“如何移动不可移动的物体?”
通配符表示:无法添加到.
这个简单的练习突出了它的意思:
List<Double> doubles = new ArrayList<Double>();
List<? extends Number> whoknows = doubles;
whoknows.add(Integer.valueOf(5));
请注意 whoknows
和 doubles
指向完全相同的列表。这里只有一个列表;您对 doubles
列表所做的任何操作也会对 whoknows
进行,反之亦然。
Soooo,如果您找到任何方法可以向其添加一个整数,那么您...只是...添加了一个整数。到双打名单。呃
这就是为什么你不能。
我正在尝试使用扩展 Number Class 的通配符将 Integer 添加到 Arraylist。编译器给我一个错误。我不知道如何解决这个问题。
import java.util.ArrayList;
public class WildCard {
ArrayList<? extends Number> an;
public WildCard() {
an = new ArrayList<Integer>();
}
public void addI(Integer a) {
an.add(a);
}
public static void main(String[] args) {
WildCard w = new WildCard();
Integer b = 3;
w.addI(b);
}
}
就这样,你可以添加整数。
ArrayList<Number> an;
而不是
ArrayList<? extends Number> an
将通配符 ?
更改为 T
:
public class Test <T extends Number> {
ArrayList<T> an;
public Test(){
an = new ArrayList<T>();
}
public void addI(T a){
an.add(a);
}
public static void main(String[]args){
Test<Number> w = new Test<>();
Integer b = 3;
w.addI(b);
Test<Integer> w2 = new Test<>();
Integer b2 = 32;
w2.addI(b2);
}
}
不可能。
这就是通配符的意思。
你在问:“我如何找到这个圆的角?” - 或“如何移动不可移动的物体?”
通配符表示:无法添加到.
这个简单的练习突出了它的意思:
List<Double> doubles = new ArrayList<Double>();
List<? extends Number> whoknows = doubles;
whoknows.add(Integer.valueOf(5));
请注意 whoknows
和 doubles
指向完全相同的列表。这里只有一个列表;您对 doubles
列表所做的任何操作也会对 whoknows
进行,反之亦然。
Soooo,如果您找到任何方法可以向其添加一个整数,那么您...只是...添加了一个整数。到双打名单。呃
这就是为什么你不能。