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