我有两个java对象:WorkflowVo
和TypeAWorkflowVo
。 TypeAWorkflowVo
是WorkflowVo
的子类。 WorkflowVo具有字段-名称,profitCenter。
TypeAWorkflowVo具有计划,实体字段。
我将TypeAWorkflowVo
存储在使用的列表中
List<? extends WorkflowVo> lsWfItems = new ArrayList<TypeAWorkflowVo>();
是否可以在运行时从
TypeAWorkflowVo
访问lsWfItems
(计划,实体)的字段?我只能在运行时看到
WorkflowVo
字段(名称,profitcenter)。换句话说,我只在WorkflowVo
中看到lsWfItems
对象。请指教。 最佳答案
您当前编写的方式不起作用。您确实有几种选择
检查每个项目的类型是否为TypeAWorkflowVo,然后将其强制转换为此类并检索值
使用TypeAWorkflowVo的type参数创建列表
使TypeAWorkflowVo上的字段可通过WorkflowVo上的通用抽象方法访问
将字段移到WorkflowVo
这些中的每一个都有其优点和缺点,而决定将完全取决于该对象的情况和定义。这些字段是否应属于超类?该列表是子类还是超类。您从应用程序中的每种方法中获得了什么?所有这些都将通过应用程序得到解答