java - 非静态方法

标签 java non-static

<分区>

我这里有一个类,用于在按下某个键时在窗口中移动枪支。但是,我收到有关从类型引用非静态方法的错误。这是两个部分。错误出现在两个“if (k == .....”行。

private class Keyboard extends KeyAdapter {

    public void keyPressed (KeyEvent e) {

        int k = e.getKeyCode();

        if (k == 39) {Gun.move(10);}
        if (k == 37) {Gun.move(-10);}

    }

}

public class Gun {

        private Color color;
        private int A,B,C,D;
        private int E,F,G,H;

        public Gun (Color c) {

            color = c;
            A = 375;
            B = 550;
            C = 50;
            D = 10;
            E = 395;
            F = 540;
            G = 10;
            H = 10;

        }

        public void move(int xAmount){

            A = A + xAmount;
            E = E + xAmount;

        }

    }

最佳答案

哪个?您需要一个实例,即对这样创建的 Gun 对象的引用:

Gun gun = new Gun(...);
gun.move(amount);

你的 Keyboard 对象必须以某种方式引用这个 Gun 对象,或者可能引用一些管理器类型的对象,它知道你正在尝试移动一个

关于java - 非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13693809/

相关文章:

java - 将实例变量传递给实例方法还是直接访问它们?

java - 如何理解JDK9的内存模型?

android - 不能从静态上下文中引用非静态变量?

java - 不能从静态上下文中引用的非静态变量

C++友元类映射

java - 用于在 Amazon Beanstalk Linux 上下载 Java 8 的 Dockerfile

java - 如何将节点从二叉树插入数组?

java - 我无法在 Android 8 Oreo(华为)中选择 PDF 文件

c++ - 非成员(member)运营商作为外国类(class)的私有(private)成员(member)

java - 如何让我的程序根据用户输入打开一个窗口?