3

getStrings()メソッドは私にを与えていますClassCastException。モデルの入手方法を教えてもらえますか?ありがとう!

public class HW3model extends DefaultListModel<String>
{           
    public HW3model()
    {
        super();
    }

    public void addString(String string)
    {
        addElement(string);
    }

    /**
     * Get the array of strings in the model.
     * @return
     */
    public String[] getStrings()
    {
         return (String[])this.toArray();
    }
}    
4

3 に答える 3

2

によって返される値はtoArray配列Objectです。

つまり、それらはではObject[]なくString[]、として宣言されてから、を介して返されますObject[]

これは、配列にケースすることは決してできないことを意味しますString。それは単に無効です。

値を自分でコピーする必要があります...たとえば

public String[] getStrings()
    Object[] oValues= toArray();
    String[] sValues = new String[oValues.length];
    for (int index = 0; index < oValues.length; index++) {
        sValues[index] = oValues[index].toString();
    }
    return sValues;
}
于 2013-02-18T23:55:24.783 に答える
1

ある配列を別の型にキャストすることはできないため、独自の配列を作成する必要があります。

public String[] getStrings() {
    String[] result = new String[getSize()];
    copyInto(result);
    return result;
}
于 2013-02-18T23:51:45.077 に答える
1

これを試して、それが機能するかどうかを確認してください

String[] stringArrayX = Arrays.copyOf(objectArrayX, objectArrayX.length, String[].class);
于 2013-02-18T23:57:24.383 に答える