当我实现一个接口时,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!");
}
});
有没有办法说所有未实现的方法都是自动为空或者某些东西而不是将它们放入代码中?
答案 0 :(得分:5)
任何界面都无法做到这一点。
但是,在这种特殊情况下(使用KeyListener
),有一个类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)
{
}
}
答案 1 :(得分:2)
如果实现接口,则必须通过实现其所有方法来履行合同。如果您不想实现方法,则可以将方法体留空,但仍然必须在代码中包含方法。
有没有办法说所有未实现的方法都是自动为空或者某些东西而不是将它们放入代码中?
不,至少在实现级别上没有。
但是从java 8开始,你可以在接口中定义默认方法,这也需要在接口本身进行更改而不是实现类。这些方法提供了允许接口定义实现的灵活性,在具体类无法为该方法提供实现的情况下,该实现将默认使用。
答案 2 :(得分:1)
没有。您可以在接口和具体类之间使用抽象类,并在那里添加未使用的方法。但是Interface定义了一个契约,一组基本属性/方法,具体类应该被称为 interface 的类型。
在eclipse中,单击编译器错误并单击添加未实现的方法以在类中添加所有未实现的方法 >实现界面。