排序集,数组,可序列化的序列化问题
-
01-10-2019 - |
题
在此过程之前,我有这个:
protected void onPostExecute(SortedSet<RatedMessage> result) {
List<Object> list=Arrays.asList(result.toArray());
lancon.putExtra("results", list.toArray()); // as serializable
}
然后在另一部分中我有
Object o=this.getIntent().getSerializableExtra("results");
//at this point the o holds the correct value (checked by debugger)
RatedMessage[] rm = (RatedMessage[]) o;// this line hangs out w ClassCastException
resultSet = new TreeSet<RatedMessage>(new Comp());
Collections.addAll(resultSet, rm);
为什么我得到ClassCastException?
解决方案
终于我把它这样工作了:
Serializable s = this.getIntent().getSerializableExtra("results");
Object[] o = (Object[]) s;
if (o != null) {
resultSet = new TreeSet<RatedMessage>(new Comp());
for (int i = 0; i < o.length; i++) {
if (o[i] instanceof RatedMessage) {
resultSet.add((RatedMessage) o[i]);
}
}
}
其他提示
对不起;我忽略了no-arg的使用 toArray()
称呼。
请注意,有超负荷 toArray(T[])
将数组作为参数的方法。
通过使用此表格,您可以控制数组的组件类型,并且可以按预期工作。
protected void onPostExecute(SortedSet<RatedMessage> result) {
lancon.putExtra("results", result.toArray(new RatedMessage[result.size()]));
}
不隶属于 StackOverflow