java - 我如何从对象类中获取第一个实体

标签 java

更新问题, 我怎样才能从对象中获取第一个对象(TaskInstance),下面附上图片(obj)

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/

相关文章:

java - 如何查看包含我的方法生成的帧的 strackrace?

java - 在 jackson json (Java) 中以平面结构序列化列表内容

java - Spring MVC 在调用 SpringStoredProcedure.execute() 后是否发出提交

java - Textview 搞乱了阿拉伯字母

java - Google App Engine Blobstore 图像

java - 使用spring框架发送电子邮件出现错误

java - 以货币格式更改 Edittext 的输入

java - 如何将变量值放入分区环境的步骤上下文中并在下一步中访问这些值。我为此使用 JSR 352

java - 如何使用可变长度字符串标记列

java - WebSphere Application Server 8 : Error 404: java. io.FileNotFoundException:SRVE0190E:找不到文件: