Java 调用一个非静态变量,以便其他类可以使用它(无法实例化)

Java 调用一个非静态变量,以便其他类可以使用它(无法实例化),java,object,non-static,Java,Object,Non Static,我有个问题 我有一些类的对象,它们被称为“猫”“狗”等等 在这些类中,我为每个猫和狗对象分配了它们自己的整数能量级别(因此当它们“移动”通过二维数组时,它们会释放并获得能量)。 我是这样说的 因为“energylevel”是特定于每个对象的,所以我不能使它成为静态的。 如何让“dog类”看到非静态存储在“cat类”中的cat对象的能级 我不能实例化Cat c=new Cat()在dog类中,它已经在main方法中完成 这都是一个大型项目的一部分,如果我没有解释清楚,请原谅。您可以在Cat对象内添

我有个问题

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

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

因为“energylevel”是特定于每个对象的,所以我不能使它成为静态的。 如何让“dog类”看到非静态存储在“cat类”中的cat对象的能级

我不能实例化
Cat c=new Cat()
在dog类中,它已经在main方法中完成


这都是一个大型项目的一部分,如果我没有解释清楚,请原谅。

您可以在Cat对象内添加一个静态方法,该方法将根据Cat的ID返回非静态变量。您需要在Cat对象内的静态映射中保留一个Cat列表

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()
}
private static HashMap cats=new HashMap();
...
公共静态int getEnergy(字符串catId){
Cat myCat=cats.get(catId);
返回myCat.getEnergy();
}
公共能源{
归还这个。能量()
}
或者,根据要求,如果要按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;
}
private static ArrayList cats=new ArrayList();
私人国际能源=100;
私有整数x=0;
私有整数y=0;
...
公共静态整数能量(整数x,整数y){
//能量-1为错误(未找到)状态。
int能量=-1;
用于(猫:猫){
if(cat.getX()==x&&cat.getY()==y){
能量=cat.getEnergy();
}
}
返回能量;
}
公共能源{
归还这个。能量()
}
公共int getX(){
归还这个.x;
}
公共int getY(){
把这个还给我;
}

您希望
如何获得
?您可以创建一个助手,在主类中的不同对象之间传递数据。这样,您可以告诉
dogA
catA正在做什么,也可以告诉
dogA
dogB正在做什么。您只需要一个具有两个参数的方法,一个用于对象,另一个用于对象。然后,您可以向接受此信息并对其作出反应的
Dog
Cat
类添加一个方法。解决方案在每本教您面向对象编程或Java基础知识的书中都有。感谢GavinCattell,回答得很好,但是有没有办法使Cat的ID等于2d数组中的一个位置?两个对象可以出现在同一个位置上吗?嘿,再次感谢,但是我写了代码,在“return myCat.getEnergy();”中出现了一个错误,它仍然说不能从静态上下文访问非静态方法getEnergy(),并且“public static int getEnergy(int x,int y)”缺少一个返回语句。其中有一些输入错误,我已经清除了。请再看一看。对不起,伙计,我输出了能量级别,它说它们都是-猫的1,我检查了三次,以确保我没有做错什么