繁体   English   中英

删除未实现的方法

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

有没有办法说所有未实现的方法会自动为空或某种形式,而不是将其放入代码中?

无法通过任何接口执行此操作。

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

如果实现接口,则必须通过实现其所有方法来履行合同。 如果您不想实现方法,则可以将方法主体保留为空白,但仍然必须将这些方法包含在代码中。

有没有办法说所有未实现的方法会自动为空或某种形式,而不是将其放入代码中?

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

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

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

在eclipse中,单击编译器错误,然后单击添加未实现的方法,以将所有未实现的方法添加到实现 接口的类中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM