代码之家  ›  专栏  ›  技术社区  ›  Pentium10

SortedSet、数组、可序列化

  •  1
  • Pentium10  · 技术社区  · 14 年前

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

    2 回复  |  直到 14 年前
        1
  •  1
  •   Pentium10    14 年前

    最后我让它这样工作:

    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]);
            }
        }
    }
    
        2
  •  1
  •   erickson    14 年前

    我很抱歉;我忽略了no-arg的用法 toArray() 打电话。

    toArray(T[]) 方法,该方法将数组作为参数。

    通过使用此窗体,可以控制数组的组件类型,它将按预期工作。

    protected void onPostExecute(SortedSet<RatedMessage> result) {
      lancon.putExtra("results", result.toArray(new RatedMessage[result.size()]));
    }