协慌网

登录 贡献 社区

将项目导入 Eclipse 后,“必须覆盖超类方法” 错误

任何时候我必须将我的项目重新导入 Eclipse(如果我重新安装 Eclipse,或者更改了项目的位置), 几乎所有重写的方法都没有正确格式化,导致错误:

该方法必须覆盖超类方法

值得注意的是,这是 Android 项目 - 无论出于何种原因,方法参数值并不总是填充,所以我必须自己手动填充它们。例如:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //These arguments have their correct names
    public void onCreateContextMenu(ContextMenu menu, View v, 
                                    ContextMenuInfo menuInfo) {                 
    }

});

最初将填充如下:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //This methods arguments were not automatically provided    
    public void onCreateContextMenu(ContextMenu arg1, View arg2,
                                    ContextMenuInfo arg3) {
    }

});

奇怪的是,如果我删除我的代码,并让 Eclipse 自动重新创建方法,它使用我已经拥有的相同参数名称,所以我真的不知道问题在哪里,除此之外它自动格式化方法我。

这需要手动重新创建所有重写的方法,这变得非常痛苦。如果有人能解释为什么会发生这种情况或如何解决它...... 我会非常高兴。

也许这是由于我格式化方法的方式,这是在另一个方法的参数内?

答案

Eclipse 默认为 Java 1.5,并且您有实现接口方法的类(在 Java 1.6 中可以使用@Override进行批注,但在 Java 1.5 中只能应用于覆盖超类方法的方法)。

转到项目 / IDE 首选项并将 Java 编译器级别设置为 1.6,并确保选择 JRE 1.6 以从 Eclipse 执行程序。

使用Eclipse Galileo,您可以转到 Eclipse - > Preferences 菜单项,然后在对话框中选择 Java 和 Compiler。

现在它仍然可以显示 1.6 的编译器合规性级别,但你仍然看到这个问题。现在选择 “ 配置项目特定设置... ” 链接,在那里您将看到项目设置为 1.5,现在将其更改为 1.6。您需要为所有受影响的项目执行此操作。

这个拜占庭菜单 / 对话框界面是 Eclipse 糟糕的 UI 设计的典型特征。

如果其他人尝试使用 alphazero 和 Paul 的方法,但仍然无法正常工作。

对我来说,即使在做了一个 Project> Clean 之后,eclipse 仍以某种方式 '缓存' 了编译错误......

我必须取消选中 Project> Build Automatically,然后执行 Project> Clean,然后再次构建。

此外,如有疑问,请尝试重新启动 Eclipse 。这可以解决许多尴尬,无法解释的错误。