删除未实现的方法

Removing non-implemented methods

当我实现一个接口时,Eclipse 告诉我添加所有实现的方法。

由于通常不需要全部,有没有办法删除从接口继承的方法而不是空的方法体?让这个无用的代码四处飘荡让我有点困扰。

KeyListener 界面就是一个很好的例子。

jTextComponent.addKeyListener(new KeyListener()
{
    @Override
    public void keyTyped(KeyEvent e)
    {
    }

    @Override
    public void keyPressed(KeyEvent pressedEvent)
    {
         System.out.println("Pressed!");
    }

    @Override
    public void keyReleased(KeyEvent arg0)
    {
    }
});

我想写以下或类似的:

jTextComponent.addKeyListener(new KeyListener()
{
    @Override
    public void keyPressed(KeyEvent pressedEvent)
    {
         System.out.println("Pressed!");
    }
});

有没有办法说所有未实现的方法自动为空什么的而不是把它们放到代码中?

没有。您可以在接口和具体 class 之间使用抽象 class 并在其中添加 unused methods 。但是接口定义了一个契约,一组基本属性/方法,具体 class 应该被调用作为 interface.

的类型

在eclipse中,你点击compiler错误,然后点击add unimplemented methods添加所有unimplemented methods 在 class 中 实现接口

没有任何界面可以做到这一点。

但是,在这种特殊情况下(KeyListener)有一个 class KeyAdapter 实现了所有具有空主体的方法,因此您可以这样做:

jTextComponent.addKeyListener(new KeyAdapter()
{
    @Override
    public void keyPressed(KeyEvent pressedEvent)
    {
         System.out.println("Pressed!");
    }
});

如果你好奇的话,KeyAdapter 基本上是这样的:

public class KeyAdapter implements KeyListener
{
    @Override
    public void keyTyped(KeyEvent e)
    {
    }

    @Override
    public void keyPressed(KeyEvent pressedEvent)
    {
    }

    @Override
    public void keyReleased(KeyEvent arg0)
    {
    }
}

如果你实现一个接口,你必须通过实现它的所有方法来履行契约。如果您不想实现方法,则可以将方法主体留空,但您仍然必须在代码中包含这些方法。

Is there a way to say that all non-implemented methods are automatically empty or something instead of putting them into the code?

不,至少在实施 class 层面上没有。

但是从java8开始你可以在接口中定义默认方法,这也需要在接口本身进行更改而不是实现class。这些方法提供了灵活性,允许接口定义实现,在具体 class 无法为该方法提供实现的情况下作为默认实现使用。