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();
}
}
答案 0 :(得分: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;
}
答案 1 :(得分:1)
您不能将一个数组转换为另一个数组的类型,因此您必须确保创建自己的数组:
public String[] getStrings() {
String[] result = new String[getSize()];
copyInto(result);
return result;
}
答案 2 :(得分:1)
试试这个,看看是否可行
String[] stringArrayX = Arrays.copyOf(objectArrayX, objectArrayX.length, String[].class);