gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:59:40 25 4
gpt4 key购买 nike

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

不是:

public void setInner(InnerClassImpl values)

你无法解决这个问题,因为实现 Foo 意味着你的类必须表现得像 Foo - 在这种情况下,这意味着你的子类必须能够处理赋予它的任何 AbstractInnerClass ,而不仅仅是特定的InnerClassImpl

关于java - 用作方法参数的抽象内部类无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28700856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com