从泛型"对象"的列表中创建自定义对象的列表。获取ClassCastException

时间:2015-09-06 21:08:22

标签: java list object

所以我的代码看起来像这样:

public void success(List<Object> profiles, Response response) {

    List<MyCustomObject> list= new ArrayList<MyCustomObject>();

    for (Object profile : profiles) {
            list.add((MyCustomObject) profile);    // this line crashes                        
     }

  }

所以我在上面提到了ClassCastException。我可以这样做吗?

以下是我要做的事情,我的真实代码有点复杂:

我有List,其中包含两种类型的对象。所以,我使用Object来保持两者。然后,一旦我从服务器收到此列表,我想将列表分成两个自定义对象列表(例如,List<MyCustomObject>而不是List<Object>。所以我在我的上面进行演员表for循环,所以我可以将传入的通用对象存储到其特定类型的对象列表中。

还有其他办法吗?我是在正确的轨道上吗?

1 个答案:

答案 0 :(得分:2)

您应该在演员表之前添加安全检查,以防止代码崩溃。

    List<MyCustomObject> list= new ArrayList<MyCustomObject>();

    int index = 0;
    for (Object profile : profiles) {

        // Safety check before casting the object
        if (profile instanceof MyCustomObject) {
            list.add((MyCustomObject) profile);    // wont crash now
        } else {
            // other type of object. Handle it separately
        }                   
     }