在我的Mappable
列表类中,我有a = Integer
列表,我想在此列表中添加int
。
通常list.add(int)
会因为java的自动拳击而起作用,但我想知道为什么这对我来说不起作用。
代码解释:在构造MappableList
期间,我可以传入可变数量的int参数,我想将它们全部添加到整数列表中
public class MappableList<Integer>{
private final List<Integer> list;
public MappableList(int... numbers){
list = new ArrayList<Integer>();
for(int i : numbers){
list.add(4);
}
}
}
答案 0 :(得分:3)
正在工作!!
你总是插入相同的值 4
for(int i : numbers){
list.add(4);
}
改为
list.add(i);
答案 1 :(得分:1)
private final List<Integer> list;
public MappableList(int... numbers){
list = new ArrayList<Integer>();
for(int i : numbers){
list.add(i);
}
}
现在它会起作用
答案 2 :(得分:0)
您不应将Integer
用作正式类型参数。如果您希望您的班级具有通用性,我建议将E
或T
作为类型参数;通常使用单字母名称:
public class MappableList<E> {
private final List<E> list;
public MappableList(E... numbers) {
list = new ArrayList<E>();
for (E i : numbers) {
list.add(i);
}
}
}
如果元素类型始终为Integer
,则当然不需要您的类是通用的。只需从声明中删除type参数:
public class MappableList {
保留其他所有内容(包括<Integer>
和List
之后的ArrayList
)(不过你可以更正循环中的数字4)。
您的问题是MappableList<Integer>
,您在课堂内Integer
被视为类型参数,而不是我认为您想要的标准类java.lang.Integer
。