对于我的第一年工程编程课,我必须用Java进行D游戏,只有很少的Java知识。
在一个类中,我通过
生成一个随机整数public int rbug = (int)(Math.random() * 18);
每隔这么多的滴答声。我必须在另一个类中使用这个整数(在if循环的要求中),显然它需要是静态的。但是当我将变量更改为public int static
时,该值不再发生变化。
有没有一种简单的方法可以解决这个问题?
编辑:添加了部分代码:
public int rbug = (int)(Math.random() * 18);
用于
public void render(Graphics g){
g.drawImage(bugs.get(rbug), (int)x, (int)y, null);
在另一堂课中:
if(Physics.Collision(this, game.eb, i, BadBug.rbug)){
}
作为BadBug.rbug的错误,我收到了消息
无法对非静态字段进行静态引用
答案 0 :(得分:0)
每次想要BadBug.rbug时,您想获得一个新号码吗?然后将其从变量转换为方法。
答案 1 :(得分:0)
使用静态来使事物更容易访问并不是一个非常好的设计理想。你想让变量有一个“getter”来从另一个类的实例访问它们,甚至可能是“setter”。一个例子:
public class Test {
String sample = 1337;
public Test(int value) {
this.sample = value;
}
public Test(){}
public int getSample() {
return this.sample;
}
public void setSample(int setter) {
this.sample = setter;
}
}
如何使用它们的一个例子:
Test example = new Test();
System.out.println(example.getSample()); // Prints: 1337
example = new Test(-1);
System.out.println(example.getSample()); // Prints: -1
example.setSample(12345);
System.out.println(example.getSample()); // Prints: 12345
现在你可能会想“如何从类中获取一个字符串,在类中创建实例变量?”。这也很简单,当你构造一个类时,你可以将类实例本身的值传递给类的构造函数:
public class Project {
private TestTwo example;
public void onEnable() {
this.example = new TestTwo(this);
this.example.printFromProject();
}
public int getSample() {
return 1337;
}
}
public class TestTwo {
private final Project project;
public TestTwo(Project project) {
this.project = project;
}
public void printFromProject() {
System.out.println(this.project.getSample());
}
}
这允许您通过传递主类实例来保留类的单个实例。
要回答有关“静态访问器”的问题,也可以这样做:
public class Test {
public static int someGlobal = /* default value */;
}
允许通过Test.someGlobal
设置和获取值。但请注意,我仍然会说这是一种可怕的做法。