1

我有个问题

我有一些对象类别,它们被称为“猫”“狗”等。

在这些类中,我为每个猫和狗对象分配了它们自己的整数能量级别(因此当它们“移动”通过二维数组时,它们会释放并获得能量)。我通过说 this.energylevel 来引用它。

因为“能级”它特定于每个对象,所以我不能使其成为静态的。如何让“狗类”看到非静态存储在“猫类”中的猫对象的能量水平?

而且我无法Cat c = new Cat();在狗类中实例化它已经在主要方法中完成。

这是一个庞大项目的一部分,如果我解释得不够清楚,请原谅我

4

1 回答 1

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;
}
于 2012-03-30T18:53:57.423 回答