Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 忽略接口中实现的方法?_Java_Android_Libgdx - Fatal编程技术网

Java 忽略接口中实现的方法?

Java 忽略接口中实现的方法?,java,android,libgdx,Java,Android,Libgdx,我有一个输入处理器接口,它监听屏幕并向按钮类提供反馈,我无法控制在接口中创建的方法。现在我正试图编写一个button类,这样我就可以在类中声明它,并只调用touchUp和touchund,这样我就不会受到代码污染 以下是我想要减少的内容: Button button = new Button(); button.setInputListener(new InputProcessor() { @Override public bool

我有一个输入处理器接口,它监听屏幕并向按钮类提供反馈,我无法控制在接口中创建的方法。现在我正试图编写一个button类,这样我就可以在类中声明它,并只调用touchUp和touchund,这样我就不会受到代码污染

以下是我想要减少的内容:

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已经提供了其中之一: