Java 用作方法参数的抽象内部类无法编译

Java 用作方法参数的抽象内部类无法编译,java,Java,我有以下抽象类,其中包含一个抽象内部类和一个利用内部类的getter/setter public abstract class AbstractOuterClass { public abstract AbstractInnerClass getInner(); public abstract void setInner(AbstractInnerClass values); public abstract class AbstractInnerClass

我有以下抽象类,其中包含一个抽象内部类和一个利用内部类的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
    }

}

我不知道这是为什么,也不知道如何避免。任何帮助都将不胜感激。

您需要使用相同的方法签名:

public void setInner(AbstractInnerClass values)
不是:


您无法回避这一点,因为实现Foo意味着您的类必须像Foo一样运行—在本例中,这意味着您的子类必须能够处理给定给它的任何
AbstractInnerClass
,而不仅仅是特定的
InnerClassImpl

,您需要使用相同的方法签名:

public void setInner(AbstractInnerClass values)
不是:

您无法回避这一点,因为实现Foo意味着您的类必须像Foo一样运行—在本例中,这意味着您的子类必须能够处理给定给它的任何
AbstractInnerClass
,而不仅仅是特定的
InnerClassImpl