我在编译整数向量时遇到问题,如下所示。转换字符串是可以的,但我遇到了整数问题。
private Vector a = new Vector();
Record record = new Record();
record.setName((String) listName.elementAt(i));
record.setPrice((int) listPrice.elementAt(index));
a.addElement(record);
以下是记录
类package goldenicon;
public class Record {
String name;
int price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
答案 0 :(得分:5)
record.setPrice((int) listPrice.elementAt(index));
你不能把原始类型放在Arraylist或Vectors中。您必须使用包装类进行此类操作,例如Integer
而非int
或Double
而不是double
。
类似地,在从Vector中检索值时,您将获得Integer的对象而不是int。
所以你必须编写类似这样的代码
record.setPrice(((Integer) listPrice.elementAt(index)).intValue());
答案 1 :(得分:3)
Java无法将对象转换为基本类型。您必须调用对象的方法来执行此任务。如果您知道您的元素继承自Number
,那么您就可以
record.setPrice(((Number) listPrice.elementAt(index)).intValue());
答案 2 :(得分:0)
您无法将对象强制转换为基元。
您可以执行以下操作:
int z = (Integer) listPrice.elementAt(0);
java autoboxing将为您处理剩下的事情。