方法keyPressed()忽略超类中定义的方法

时间:2014-08-30 11:31:14

标签: java

我使用KeyAdapter的keypressed函数。一切正常,但我得到一个警告: 方法keyPressed()忽略超类中定义的方法。 我不知道如何修复警告。

这是我使用的代码行。

public void keyPressed(KeyEvent e) {
    keys[e.getKeyCode()] = true;
    }

提前致谢。

2 个答案:

答案 0 :(得分:1)

根据我的经验,这是因为覆盖了父类的方法,但没有调用super.method()

要摆脱这种情况,您的方法将如下所示:

public void keyPressed(KeyEvent e) {
    super.keyPressed(e);
    keys[e.getKeyCode()] = true;
}

答案 1 :(得分:1)

虽然我的编译器/ IDE没有显示这些警告,但我很确定这是因为你没有调用KeyAdapter的{​​{1}}方法。我认为这个警告非常有用,因为你要覆盖非抽象方法,这意味着该方法已经在keyPressed中实现。

显然,在这种情况下,默认实现什么也不做,所以你不需要调用它,但是,在不同的场景中,超类的实现可能依赖于它的方法。在不调用它的情况下覆盖它可能会破坏超类的代码。

您可以忽略此警告或只是调用方法:

KeyAdapter

简单地添加@Override public void keyPressed(KeyEvent e) { super.keyPressed(e); //call the default implementation //do your own stuff } 也可能会删除警告,因为这表明您知道您正在覆盖某个方法。