假设我有这样的类(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/