更新问题, 如何从Object获取第一个对象(TaskInstance),下面的附加图像(obj)
虽然在obj中存在TaskInstance但是如果检查
,则控制不在内部if-statements
我得到以下代码的类强制转换异常,我在taskList中有两个对象,比如FirstTask和SecondTask。
如何从obj获取FirstTask对象。当我尝试将taskList转换为FirstTask获取类强制转换异常时,因为obj包含两个对象(FirstTask和SecondTask),请求帮助来解决我的挑战。
for(Object obj : taskInstanceEntities) {
if(obj instanceof TaskInstance ){
procurementDTOs.add(bidPreviewMapper.map((TaskInstance)obj));
}
}
答案 0 :(得分:3)
首先:您不需要记下通用类型两次;从Java 7开始,我们有钻石操作员;这允许你写:
List<FirstTask> firstTasks = new ArrayList<>();
然后你的问题是你正在对FirstTask进行无条件强制转换。相反,做:
for (Object someTask : taskList) {
if (someTask instanceof FirstTask) {
firstTasks.add((FirstTask) someTask);
}
}
例如,。当然,为了充分利用泛型,假设所有的Task类都可能扩展一些基类,因此taskList应该更像:
List<BaseTask> taskList = ...
让SomeCollection<Object>
几乎总是一种糟糕的设计气味!