【发布时间】:2015-12-08 01:20:39
【问题描述】:
我一直在尝试找到一种方法来执行以下操作,但不确定它是否可能。假设我有一个超类和两个具有完全不同且独立的字段的子类(类Field1 和Field2):
public abstract class Parent {
private String field;
// getters and setters
}
public class Child1 extends Parent {
private Field1 field1;
}
public class Child2 extends Parent {
private Field2 field2;
}
现在,我有一个带有接受 Parent 类的方法的接口,以及实现该接口的两个实现 Impl1 和 Impl2,但我希望它们接受子类:
public interface IMethod {
void method(Parent parent);
}
public class Impl1 implements IMethod {
@Override
public void method(Child1 child1) { // like this won't compile
// implementation using Field1
}
}
public class Impl2 implements IMethod {
@Override
public void method(Child2 child2) { // like this won't compile
// implementation using Field2
}
}
我一直在尝试以不同的方式使用泛型来实现这一点,因此我避免从Parent 强制转换为方法实现中的子类。问题是我对泛型还不是很熟悉,所以不确定这是否可行或没有解决方案。
【问题讨论】:
标签: java oop generics inheritance