gpt4 book ai didi

java - 返回类型与 不兼容

转载 作者:行者123 更新时间:2023-11-29 03:24:24 25 4
gpt4 key购买 nike

我明白了

"Return type is incompatible with Bar.doClick()"

import some.library.Bar

public class Foo implements Bar {

public enum Outcome {
ONE, TWO, THREE, NEW;
}

public Outcome doClick() {
return Outcome.NEW;
}
}

会报错,为什么?我正在尝试返回我认为正确的类型。

Bar.class 包含以下几行:

    public enum Outcome {
ONE, TWO, THREE, NEW;
}
Outcome doClick ();

Eclipse 告诉我,如果我改变

public Outcome doClick() {
return Outcome.NEW;
}

进入

public Bar.Outcome doClick() {
return Outcome.NEW;
}

我可以解决错误,但在我的返回行上创建一个新错误。我想我真的迷失在这里的一个原则问题上,可以使用一些基本的理解。

最佳答案

在您的Bar 界面中,Outcome 指的是您在Bar 中声明的enum 成员。因此,doClick() 抽象方法的返回类型为 Bar.Outcome

在您的 Foo 类中,您声明了另一个 enum 成员,也称为 Outcome。您在 Bar 中错误声明的方法 doClick 的返回类型为 Foo.Outcome。由于方法签名不考虑返回类型,因此您实际上拥有了这个

public Outcome doClick() {
return Outcome.NEW;
}

public Bar.Outcome doClick() {
return Outcome.NEW;
}

这将导致编译错误,因为您有重复的方法。

您的 doClick() 方法必须返回一个 Bar.Outcome 对象来实现(满足)Bar 接口(interface)。

public Bar.Outcome doClick() {
return Bar.Outcome.NEW;
}

因为阴影

return Outcome.NEW;

指的是 Foo.Outcome.NEW,它不是预期返回类型 Bar.Outcome 的类型。

我不知道你为什么要声明两个同名的枚举。

关于java - 返回类型与 <Interface.functionName> 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21808077/

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