1

以下に示すような整数ベクトルのキャストに問題があります。文字列のキャストは問題ありませんが、整数に問題があります。

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;
    }

}
4

3 に答える 3

5
record.setPrice((int) listPrice.elementAt(index));

ArraylistまたはVectors内にプリミティブ型を入れることはできません。Integerこのような操作には、やではなくint、などのラッパークラスを使用する必要がありDoubleますdouble

同様に、Vectorから値を取得している間、intではなくIntegerのオブジェクトを取得します。

したがって、このようなコードを作成する必要があります

record.setPrice(((Integer) listPrice.elementAt(index)).intValue());
于 2012-10-22T01:47:36.630 に答える
3

Javaはオブジェクトをプリミティブ型にキャストできません。このタスクを実行するには、オブジェクトのメソッドを呼び出す必要があります。あなたの要素がから継承することを知っているならNumber、あなたはただすることができます

record.setPrice(((Number) listPrice.elementAt(index)).intValue());
于 2012-10-22T01:45:52.527 に答える
0

オブジェクトをプリミティブにキャストすることはできません。

代わりに、次の操作を実行できます。

    int z = (Integer) listPrice.elementAt(0);

そして、Javaオートボクシングが残りの処理を行います。

于 2012-10-22T01:46:07.377 に答える