所以我的代码看起来像这样:
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
循环,所以我可以将传入的通用对象存储到其特定类型的对象列表中。
还有其他办法吗?我是在正确的轨道上吗?
答案 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
}
}