【发布时间】:2020-03-11 12:54:04
【问题描述】:
我有一个抽象类A、两个名为B、C 的子类和两个位于单独类中的重载方法:
public void process(B objB) {...}
public void process(C objC) {...}
我从存储库中检索了一个类型为 A 的实体,我想进行如下调用:
A objA = repo.findById(id);
process(objA);
我知道需要强制转换,但我不想使用 instanceof 或大量 if 语句进行大量检查。
实现这种方法调用的最佳选择是什么? 而且这样的代码设计好不好?
【问题讨论】:
-
类中有重载的方法吗?
-
不。他们在一个单独的班级。
-
你能包含一些你的代码吗?
-
这样的方法重载不是一个好的架构决策。 Effective Java 在明智地使用重载一章中广泛介绍了这种做法。
-
有趣的是,这里的问题源于使用过程式编程。
B和C是数据类(结构),而处理它们的逻辑位于单独的类(服务或实用程序)中。应用面向对象编程是显而易见的解决方案:将数据及其逻辑组合在一个类中。
标签: java inheritance methods polymorphism overloading