Java 为什么我需要一个静态修改器以及如何修复它?
我的eclipse告诉我,我需要使用静态修改器,但当我这样做时,洞的事情就错了。这是我的代码,我希望您能帮助我,告诉我我把事情搞砸了(我从StealthyHunter7得到了关于内部类的提示):Java 为什么我需要一个静态修改器以及如何修复它?,java,static,modifier,Java,Static,Modifier,我的eclipse告诉我,我需要使用静态修改器,但当我这样做时,洞的事情就错了。这是我的代码,我希望您能帮助我,告诉我我把事情搞砸了(我从StealthyHunter7得到了关于内部类的提示): 以下内容不能是字段,而是放在main方法中,即静态方法 Key keyObject = new Key(); 在密钥类中初始化密钥字段后,看看在new Key()上会发生什么情况。: 创建密钥实例时,它具有必须实例化的字段密钥 创建密钥实例时,它具有必须实例化的字段密钥 创建密钥实例时,它具有必须实
以下内容不能是字段,而是放在main方法中,即静态方法
Key keyObject = new Key();
在密钥类中初始化密钥字段后,看看在new Key()上会发生什么情况。
:
- 创建密钥实例时,它具有必须实例化的字段密钥
- 创建密钥实例时,它具有必须实例化的字段密钥
- 创建密钥实例时,它具有必须实例化的字段密钥
private static class Key
否则,类键会保存一个“ClickBot.this”,然后递归开始。以下内容不能是字段,而是放在main方法中,即静态方法
Key keyObject = new Key();
在密钥类中初始化密钥字段后,看看在new Key()上会发生什么情况。
:
- 创建密钥实例时,它具有必须实例化的字段密钥
- 创建密钥实例时,它具有必须实例化的字段密钥
- 创建密钥实例时,它具有必须实例化的字段密钥
private static class Key
否则,类键持有一个“ClickBot.this”,递归开始。您试图使用主方法中的
ClickBot
作为ClickBot
的类成员,当然是static
。因此,当您在main
中时,您没有ClickBot
实例,这意味着您不能使用类成员
因此,要修复此问题,请将keyObject
移动到main方法(1)内,或将keyObject
设置为静态(2)
下面是如何做(1):
以下是第(2)条:
您试图使用主方法中的
keyObject
作为ClickBot
的类成员,当然是static
。因此,当您在main
中时,您没有ClickBot
实例,这意味着您不能使用类成员
因此,要修复此问题,请将keyObject
移动到main方法(1)内,或将keyObject
设置为静态(2)
下面是如何做(1):
以下是第(2)条:
您的
main
方法是静态的,因此无法访问非静态变量。如果不想在键
对象上使用静态
,请执行以下操作:
1) 为您的ClickBot
类创建构造函数
2) 初始化其中的keyObject
2) 在main
方法中创建ClickBot
3) 在ClickBot
类中创建一个新方法(public void methodName()
)
4) 把你所有的代码都放进去
5) 调用单击主方法中的botobject.methodName()
否则,如果Key
对象上的static
没有问题,只需在其上添加static
或者,如果可以的话,将其作为main
方法中的局部变量。您的main
方法是静态的,因此,您无法访问非静态变量。如果不想在键
对象上使用静态
,请执行以下操作:
1) 为您的ClickBot
类创建构造函数
2) 初始化其中的keyObject
2) 在main
方法中创建ClickBot
3) 在ClickBot
类中创建一个新方法(public void methodName()
)
4) 把你所有的代码都放进去
5) 调用单击主方法中的botobject.methodName()
否则,如果Key
对象上的static
没有问题,只需在其上添加static
或者,如果您同意的话,在main
方法中将其设置为局部变量。我将其移动到main方法,但它仍然表示它不能“对非静态方法add key listener进行静态引用:(对此我能做些什么?哦,你也在用JFrame做同样的事情。首先创建一个JFrame实例:JFrame frame=new JFrame();frame.addKeyListener(…);
我把它移到了main方法,但它仍然说它不能“对非静态方法进行静态引用AddKey listener:(对此我能做些什么?哦,你也在用JFrame做同样的事情。首先创建一个JFrame实例:JFrame frame=new JFrame();frame.addKeyListener(…);
// Make it static:
static Key keyObject = new Key();
public static void main(String[] args) throws IOException, AWTException
{
JFrame.addKeyListener(keyObject);
final Robot robot = new Robot();
robot.delay(2000);
....