更新问题, 我怎样才能从对象中获取第一个对象(TaskInstance),下面附上图片(obj)
虽然 TaskInstance 存在于 obj Control 中,但不会进入 if 检查
for(Object obj : taskInstanceEntities) {
if(obj instanceof TaskInstance ){
procurementDTOs.add(bidPreviewMapper.map((TaskInstance)obj));
}
}
我得到以下代码的类转换异常,我在 taskList 中有两个对象,比如 FirstTask 和 SecondTask。
如何从 obj 中获取 FirstTask 对象?当我尝试将 taskList 转换为 FirstTask 时出现类转换异常,因为 obj 包含两个对象(FirstTask 和 SecondTask),请求帮助解决我的挑战。
List<Object> taskList = findByNamedQuery("<select query with multiple table join>");
List<FirstTask> firstTaskList = new ArrayList<FirstTask>();
for(Object obj : taskList){
firstTaskList.add((FirstTask)obj);
}
最佳答案
首先:你不需要写下泛型两次;从 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>
几乎总是有糟糕设计的味道!
关于java - 我如何从对象类中获取第一个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39607681/