java - 代码重复 vs 类型转换 vs?

标签 java

假设我有这样的类(class):
父级 A,子级 A1,子级 A2...子级An
ParentB,ChildB1,ChildB2...ChildBn

因此,每个 ChildAi 类都扩展 ParentA,每个 ChildBi 类都扩展 ParentB 类。

在 ChildAi 类中,我需要与 ChildBi 类一起工作。例如:

public class ChildAi extends ParentA{
   public ChildBi getChildB(...){
   ....some logic....
   return childBi;
  }
}

所以问题出在 getChildB 方法上。如果我将此方法放在 ParentA 中,我只能返回 ParentB 类,并且我将始终需要进行转换。如果我把这个方法放在 ChildAi 中,那么我总是会复制这个方法以及至少它的一些逻辑。我该如何解决?没有泛型可以解决这样的问题吗?

最佳答案

我认为泛型是你的 friend 。

定义 ParentA 类如下:

public class ParentA<T extends {
   public abstract T getB();
}

现在每个子类将定义泛型类型如下:

public class ChildA1 extends ParentA<ChildB1> {
    public ChildB1 getB() { return ...;}
}

就是这样。没有强制转换,也没有重复的代码。

关于java - 代码重复 vs 类型转换 vs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27256995/

相关文章:

java - 在C#中使用exe时出现异常

java - 调用类构造函数和使用 Class.forName().newInstance 的区别

Java:在断点调试期间在隐式队列中检测到 "gridlock"

java - 调用 executeUpdate 时 UCanAccess/Jackcess 异常禁用我的 Logger 输出

java - 使用 ParseRecyclerQueryAdapter

java - 根据输入类型做出决策

Java - 处理内存中的文件而不需要磁盘R/W

java - JPA 与 JTA : Persist entity and merge cascaded child entities

java - 当另一个服务正在运行时,该服务无法工作

java - 为什么命令行找不到我的 .java 文件?