0

我有这样的声明

TransactionItemDto itemDto = getTransactionItemMessage().getTransactionItemDto();

然后我有以下代码:

if (itemDto instanceof ChangeTransactionItemDto) {
            inputItem.setSiteCode(itemDto.getSiteCode()));
            inputItem.setBinLocation(itemDto.getBinLocation()));

        }

现在,我有变量 ' department' 仅属于ChangeTransactionItemDto。但我目前无法在上面的 if 块中执行此操作:inputItem.setDepartment(itemDto.getDepartment()));

那是因为 itemDto 被声明为 typeTransactionItemDto 而不是ChangeTransactionItemDto.

如果我在itemDto.getDepartment()内部检查它的子类类型,我可以在调试过程中检查该值。但该声明给出了错误。如何设置属于子类的部门 -ChangeTransactionItemDtoinputItem

4

2 回答 2

0

如果超类需要访问特定于子类的字段,这是一种设计气味。

一种解决方法是使用“什么都不做”实现将 getter/setter 拉到超类中,然后使用它的那些子类用“做某事”实现覆盖它。

这样,类层次结构中就没有需要特殊处理的类——它们可以以相同的方式处理。

于 2013-09-20T05:22:07.377 回答
0

由于您已验证 if itemDtois of instance ChangeTransactionItemDto,您可以随时致电inputItem.setDepartment(((ChangeTransactionItemDto)itemDto).getDepartment())

于 2013-09-20T05:14:21.757 回答