Java 忽略接口中实现的方法?
我有一个输入处理器接口,它监听屏幕并向按钮类提供反馈,我无法控制在接口中创建的方法。现在我正试图编写一个button类,这样我就可以在类中声明它,并只调用touchUp和touchund,这样我就不会受到代码污染 以下是我想要减少的内容:Java 忽略接口中实现的方法?,java,android,libgdx,Java,Android,Libgdx,我有一个输入处理器接口,它监听屏幕并向按钮类提供反馈,我无法控制在接口中创建的方法。现在我正试图编写一个button类,这样我就可以在类中声明它,并只调用touchUp和touchund,这样我就不会受到代码污染 以下是我想要减少的内容: Button button = new Button(); button.setInputListener(new InputProcessor() { @Override public bool
Button button = new Button();
button.setInputListener(new InputProcessor() {
@Override
public boolean keyDown(int keycode) {
return false;
}
@Override
public boolean keyUp(int keycode) {
return false;
}
@Override
public boolean keyTyped(char character) {
return false;
}
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
return false;
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
return false;
}
@Override
public boolean mouseMoved(int screenX, int screenY) {
return false;
}
@Override
public boolean scrolled(int amount) {
return false;
}
}
);
在button类中,我有以下代码:
public void setInputListener(InputProcessor inputProcessor){
this.inputProcessor = inputProcessor;
}
我为其他任何被困在上面的人想出了这个办法。您必须创建另一个实现该接口的类,并确保它是抽象的,下面是一个示例:
public abstract class ButtonListener implements InputProcessor {
@Override
public boolean keyDown(int keycode) {
return false;
}
@Override
public boolean keyUp(int keycode) {
return false;
}
@Override
public boolean keyTyped(char character) {
return false;
}
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
return false;
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
return false;
}
@Override
public boolean mouseMoved(int screenX, int screenY) {
return false;
}
@Override
public boolean scrolled(int amount) {
return false;
}
}
然后你可以在任何地方这样做
Button button = new Button();
button.setInputListener(new ButtonListener() {
@Override
public boolean keyDown(int keycode) {
return super.keyDown(keycode);
}
}
);
如果不处理,您可以重写所有方法,返回false;如果正在处理,则返回true。是的,我知道,但我首先尝试避免在代码中使用它们。然后不要将它们放在接口中。或者不使用接口(改为类,使用非抽象方法,因此它们不需要被重写)为此目的创建接口。总有一个解决办法,您可以创建一个自定义类来实现接口,并为每个方法提供一些默认实现。以后您可以扩展该类而不是使用接口。只需使用
InputAdapter
即可。对于接口中的所有方法,它allready都返回false,您只需要重写所需的方法。缺点是,它是一个类,不能扩展其他类,如果使用适配器
它被称为适配器。LibGDX已经提供了其中之一: