我有以下带抽象内部类的抽象类和使用内部类的getter / setter
public abstract class AbstractOuterClass
{
public abstract AbstractInnerClass getInner();
public abstract void setInner(AbstractInnerClass values);
public abstract class AbstractInnerClass
{
}
}
当我尝试覆盖setter(getter工作正常)时,由于其方法参数是扩展的抽象内部类,编译器不会将setter识别为被覆盖。
public class OuterClassImpl extends AbstractOuterClass
{
@Override
public InnerClassImpl getInner()
{
return null;
}
@Override
public void setInner(InnerClassImpl values)
{
// do stuff
}
public class InnerClassImpl extends AbstractInnerClass
{
// define attrs
}
}
我不确定为什么会这样或如何绕过它。任何帮助将不胜感激。
答案 0 :(得分:5)
您需要使用相同的方法签名:
public void setInner(AbstractInnerClass values)
不
public void setInner(InnerClassImpl values)
你无法解决这个问题,因为实现Foo意味着你的类必须像Foo一样 - 在这种情况下意味着你的子类必须能够处理给它的任何AbstractInnerClass
,而不仅仅是特定的{{1} }}