Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse——为什么接口方法被认为是开放超级实现_Java_Eclipse_Interface - Fatal编程技术网

Java Eclipse——为什么接口方法被认为是开放超级实现

Java Eclipse——为什么接口方法被认为是开放超级实现,java,eclipse,interface,Java,Eclipse,Interface,遵循一个接口和一个实现类: public interface MyI void test(); } public MyImpl implements MyI { //@Override with or without @Override public void test() { } } 按下Ctrl键并单击Eclipse中的implementationtest()method时,将显示一个菜单,提供Open Super implementation

遵循一个接口和一个实现类:

public interface MyI
     void test();
}

public MyImpl implements MyI {
     //@Override with or without @Override 
     public void test() {
     }
}
按下Ctrl键并单击Eclipse中的implementation
test()
method时,将显示一个菜单,提供
Open Super implementation

选择
打开超级实现
时,将转到接口的方法,该方法没有实现


使用接口方法是有意的还是仅仅是一个额外的特性,尽管命名很混乱/似乎是错误的?

这是一个IDE特性。如菜单项所示,它将带您进入超级方法。在运行时,将调用实现方法。因此,这只是IDE的一个特性。

在执行过程中(错误的i.o.)似乎可以提供一些信息。因为存在(可以存在)一个几乎是常规的/预期的
@覆盖:第一个声明

对于抽象方法,在一个可能相同的抽象超类中

因此,“实现”有点误导,但还有覆盖。
应该注意的是,接口方法的第一个实现最初不能有
@覆盖
。一个能够防止错误的java更改(确实可以看到抽象方法是用正确的签名实现的)。

我想问的是,为什么IDE特性调用了
implementation
,而不是
super
哪个eclipse版本?你可以发布一个菜单项的截图吗?它是否在上下文菜单中(您只是说“单击实现”,而不是右键单击或其他什么)?这至少与Java语言规范给出的
@Override
一致。@howlger它有无
@Override
(更新)@FlorianAlbrecht Eclipse 2018-09,当您在方法上单击Ctrl+鼠标时。补充image@user7294900当然可以,但是
@Override
不是错误,这意味着该方法根据。Eclipse使用与Java语言规范一致的含义,即使这看起来不那么直观(因为这里的
@Override
不是一个错误是不直观的:这里没有覆盖超级实现;只是一个接口方法的实现)。是的,
@Override
对于接口是可选的,但我想表达的是,可以从UI访问中删除操作go-to实现,或者让它跟随go-to声明源。