我怎样才能从Object类中获取第一个实体

时间:2016-09-21 04:39:49

标签: java

更新问题, 如何从Object获取第一个对象(TaskInstance),下面的附加图像(obj)

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

1 个答案:

答案 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>几乎总是一种糟糕的设计气味!