我懂了
“返回类型与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
是指enum
您在中声明的成员Bar
。因此,doClick()
抽象方法的返回类型为Bar.Outcome
。
在您的Foo
课程中,您声明了另一个enum
成员,也称为Outcome
。doClick
您错误地声明的方法Bar
的返回类型为Foo.Outcome
。由于方法签名未考虑返回类型,因此您可以有效地使用此方法
public Outcome doClick() {
return Outcome.NEW;
}
public Bar.Outcome doClick() {
return Outcome.NEW;
}
这将导致编译错误,因为您有重复的方法。
您的doClick()
方法必须返回一个Bar.Outcome
对象以实现(满足)Bar
接口。
public Bar.Outcome doClick() {
return Bar.Outcome.NEW;
}
由于阴影
return Outcome.NEW;
指的是Foo.Outcome.NEW
哪种类型不是Bar.Outcome
期望的返回类型。
我不知道为什么您用相同的名称声明了两个枚举。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句