Java 删除未实现的方法

Java 删除未实现的方法,java,eclipse,interface,Java,Eclipse,Interface,当我实现一个接口时,Eclipse告诉我添加所有实现的方法 由于通常不需要所有方法,有没有办法删除从接口继承的方法,而不是使用空的主体?让这些无用的代码四处游荡让我有点烦恼 一个很好的例子是keysister接口 jTextComponent.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { } @Override public void

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

由于通常不需要所有方法,有没有办法删除从接口继承的方法,而不是使用空的主体?让这些无用的代码四处游荡让我有点烦恼

一个很好的例子是
keysister
接口

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!");
    }
});

有没有一种方法可以说所有未实现的方法都自动为空或其他什么,而不是将它们放入代码中?

没有。您可以在接口和具体类之间使用抽象类,并在其中添加未使用的方法。但是接口定义了一个契约,一组基本属性/方法,一个具体的类应该被称为接口的类型

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)
    {
    }
});

在eclipse中,单击编译器错误并单击add unimplemented methods(添加未实现的方法)以添加实现接口的类中的所有未实现的方法。

对于任何接口都没有这样做的方法

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)
    {
    }
});
但是,在这种特殊情况下(使用
keylister
),有一个类
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)
    {
    }
}

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

有没有一种方法可以说所有未实现的方法都自动为空或其他什么,而不是将它们放入代码中

不,至少在实现类级别没有


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

未实现的方法体是处理此问题的正常方法。请参阅以下关于何时定义抽象类的答案。您的问题答案是否定的。必须解决接口中声明的所有方法。