我有扩展其他接口的接口。当使用这些接口的实现时,我的IDE(Eclipse和IntelliJ思想)无法解析实现类。这并不妨碍代码的编译,但IDE非常奇怪。我有什么根本的误解吗?我提出了一个概述问题的简化结构。Java接口继承导致IDE混淆
甲基接口
public interface Avoidable {
public void avoid();
}
延伸基底的界面的一个
public interface MostlyAvoidable extends Avoidable {
public void most();
}
这是实施
public class MostlyAvoidableImpl implements MostlyAvoidable {
@Override
public void most() {}
@Override
public void avoid() {}
}
第二延伸接口
public interface SomewhatAvoidable extends Avoidable {
public void somewhat();
}
及其实施
public class SomewhatAvoidableImpl implements SomewhatAvoidable {
@Override
public void avoid() {}
@Override
public void somewhat() {}
}
最后使用这些实现的一个类:
public class UsesSomewhatAvoidable {
private SomewhatAvoidable somewhatAvoidable;
public UsesSomewhatAvoidable(SomewhatAvoidable somewhatAvoidable) {
this.somewhatAvoidable = somewhatAvoidable;
}
public void someMethod() {
somewhatAvoidable.avoid();
}
}
现在,如果我定位到somewhatAvoidable.avoid();并要求IDE找到实现avoid()方法的代码,它会问我是否意思是MostlyAvoidableImpl或SomewhatAvoidableImpl。为什么?当然,它可以弄清楚这一点?
这是理念10.5按下Ctrl键+ Alt键+乙(诚然,相当旧的版本现在)时会发生什么,但它也发生在Eclipse的最新版本。
编辑:在最后一行改正错字 - SimplyAvoidImpl到SomewhatAvoidableImpl,并添加屏幕截图。
'SimplyAvoidImpl'在哪里? –
@ Code-Guru难道你不认为这只是一个错字? – maba
@maba最有可能。但很难推断出修正应该是什么。 –