我有两个java对象:WorkflowVoTypeAWorkflowVoTypeAWorkflowVoWorkflowVo的子类。 WorkflowVo具有字段-名称,profitCenter。
TypeAWorkflowVo具有计划,实体字段。

我将TypeAWorkflowVo存储在使用的列表中

List<? extends WorkflowVo> lsWfItems  = new ArrayList<TypeAWorkflowVo>();


是否可以在运行时从TypeAWorkflowVo访问lsWfItems(计划,实体)的字段?

我只能在运行时看到WorkflowVo字段(名称,profitcenter)。换句话说,我只在WorkflowVo中看到lsWfItems对象。请指教。

最佳答案

您当前编写的方式不起作用。您确实有几种选择


检查每个项目的类型是否为TypeAWorkflowVo,然后将其强制转换为此类并检索值
使用TypeAWorkflowVo的type参数创建列表
使TypeAWorkflowVo上的字段可通过WorkflowVo上的通用抽象方法访问
将字段移到WorkflowVo


这些中的每一个都有其优点和缺点,而决定将完全取决于该对象的情况和定义。这些字段是否应属于超类?该列表是子类还是超类。您从应用程序中的每种方法中获得了什么?所有这些都将通过应用程序得到解答

10-04 17:51