我一直在研究一个相当大的程序,并且认为是时候分班上课了。 1个.java文件用于GUI代码,1个.java文件用于GUI所提供的功能背后的机制。但是,这是我的问题,我在彼此之间创建了每个类的实例,然后程序拒绝启动,因此我显然做错了什么。在RPG
类中,我具有以下代码行:
public Mechanics mechanics = new Mechanics();
对于
Mechanics
类,我有以下代码:public RPG rpg = new RPG();
我这样做的原因是尝试这样做:
我的很多变量都在
RPG
类中,我希望能够从rpg
调用它们并对其进行操作,然后将它们发送回RPG
,这是我用来测试此功能的代码(来自Mechanics
类):class Mechanics{
public RPG rpg = new RPG();
public Mechanics(){
}
public void helloWorld(){
System.out.println("Hello World!");
System.out.println("Health before:"+rpg.Health);
rpg.Health = rpg.Health - 5;
System.out.println("Health after:"+rpg.Health);
}
}
是的,
Health
是我的int
类中的公共RPG
。在
RPG
类中,这是我用来测试Mechanics
类的代码:mechanics.helloWorld();
这是我的问题:代码可以编译,但是当我尝试运行它时,出现此错误:
at Mechanics.<init>(Mechanics.java:15)
at RPG.<init>(RPG.java:127)
这是我的问题。我什至这样做对吗?使我的程序不想运行的代码有什么问题?
添加:我也尝试将其他类也称为
private
,该程序将编译,但仍然拒绝启动,并向我提供相同的错误Mechanics
的第15行:public RPG rpg = new RPG();
RPG
的第127行:public Mechanics mechanics = new Mechanics();
最佳答案
Mechanics
的第15行可能更像:
public RPG rpg = new RPG(this); // must be in constructor or non static method
在RPG中:
public Mechanics mechanics;
在构造函数中:
this.mechanics = mechanics;