好的,所以我将以一个例子开始:
假设我们有一个带有接口变量的抽象类,它在构造函数中初始化。抽象类本身具有该变量的getter,它的子类在构造函数中具有接口的实现。
现在,我遇到的问题是,当试图调用任何子类的getter(它只在超类中声明,但它应该使用在它们的构造函数中声明的变量)时,它没有&#39 ; t返回实现,返回接口本身。
public abstract class AbstractClass {
private final ExampleInterface exampleInterface;
public AbstractClass(ExampleInterface exampleInterface) {
this.exampleInterface = exampleInterface;
}
public ExampleInterface getExampleInterface() {
return this.exampleInterface;
}
}
public class AbstractClassSubclass extends AbstractClass {
//Instead of the interface itself, I provide my constructor it's implementation
public AbstractClassSubclass(ExampleInterfaceImplementation exampleInterfaceImpl) {
super(exampleInterfaceImpl);
}
}
public class TestClass {
private void testMethod() {
AbstractClassSubclass test = new AbstractClassSubclass(
new ExampleInterfaceImplementation()
);
//Would return ExampleInterface, instead of ExampleInterfaceImplementation
test.getExampleInterface();
}
}
更新
我相信我已经使用类型参数修复了这个问题。 我确定我之前尝试过但有一些问题...
现在它完美无缺。