我遇到了问题
我有一些对象类,它们被称为“猫”“狗”等。
在这些类中,我已经为每个猫狗对象分配了他们自己的整数能量水平(因此当他们“移动”通过二维数组时,他们会松散并获得能量)。 我通过说这个能量水平来引用它。
因为“energylevel”是特定于每个对象所以我不能使它静止。 我怎样才能让“狗类”看到猫对象的能量水平非静态地存储在“猫类”中?
我无法在dog类中实例化Cat c = new Cat();
它已在main方法中完成。
这是一个大型项目的一部分,如果我没有足够清楚地解释,请原谅我
答案 0 :(得分:0)
您可以在Cat对象中添加一个静态方法,该方法将根据Cat的ID返回非静态变量。您需要在Cat对象内的静态地图中保留Cats列表。
private static HashMap<String,Cat> cats = new HashMap<String,Cat>();
...
public static int getEnergy(String catId) {
Cat myCat = cats.get(catId);
return myCat.getEnergy();
}
public int getEnergy() {
return this.energy()
}
或者根据要求,如果您想通过X搜索,Y:
private static ArrayList<Cat> cats = new ArrayList<Cat>();
private int energy = 100;
private int x = 0;
private int y = 0;
...
public static int getEnergy(int x, int y) {
//Energy of -1 being the error (not found) state.
int energy = -1;
for(Cat cat : cats) {
if(cat.getX() == x && cat.getY() == y) {
energy = cat.getEnergy();
}
}
return energy;
}
public int getEnergy() {
return this.energy()
}
public int getX() {
return this.x;
}
public int getY() {
return this.y;
}