Java 在其他类中访问主类中的公共变量

Java 在其他类中访问主类中的公共变量,java,variables,compiler-errors,Java,Variables,Compiler Errors,我正在尝试将我用Python制作的游戏移植到Java。在Python版本中,我将所有的方法和变量都放在一个“类”中,玩家是这样的字典: game.py ... new_player={"name":"","hp":0,...} players=[] //to add new player players.append(new_player.copy()) 然后分别添加玩家的数据值: ... players[0]["name"]="bob" players[0]["hp"]=50 ... 在J

我正在尝试将我用Python制作的游戏移植到Java。在Python版本中,我将所有的方法和变量都放在一个“类”中,玩家是这样的字典:

game.py

...
new_player={"name":"","hp":0,...}
players=[]
//to add new player
players.append(new_player.copy())
然后分别添加玩家的数据值:

...
players[0]["name"]="bob"
players[0]["hp"]=50
...
在Java版本中,我有一个单独的类用于定义玩家对象,以及游戏的主方法

例如(这是一个小版本):

java(省略返回)

假设,当要编译的两个类一起编译时,程序将能够运行,因为主变量是公共变量,并且在程序运行时定义了播放器变量。但是,编译器无法识别这一点并抛出错误,因为类(顺便说一句,在同一个目录中)不相互读取,并且在检查数组/arraylist时,对象没有在数组/arraylist中“定义”

如何让编译器看到定义的变量?如果需要的话,我可以上传这两个类的当前工作版本和最终的python版本,但我喜欢保持游戏的源代码封闭


编辑:根据sjkm的回复修复了ArrayList初始化问题定义列表的通用类型:

改变

public static ArrayList players = new ArrayList<player>();
public static ArrayList pdead = new ArrayList<String>();
publicstaticarraylistplayers=newarraylist();
public static ArrayList pdead=new ArrayList();

publicstaticarraylistplayers=newarraylist();
public static ArrayList pdead=new ArrayList();

否则,您必须始终强制转换从列表中获得的对象…

Java不要求您用
关闭
{}
括号。谢谢,这修复了主类中的错误,但是如何让player.java查看这些变量呢?另外,感谢您的快速回复。您确实希望从player类内部访问哪些变量?为了显示统计数据并根据基于players.size()的状态效果添加hp,我现在只需要访问players数组列表。如果我有其他人,我可以用同样的方法。还有,我们为什么不聊天呢?像这样访问玩家列表:game.players |[Class].[Static_Public_Member]哦,太棒了!谢谢你的帮助。
public class player
{
    //arbitrary list of private variables like hp and name
    public player(new_name)
    {
        name = new_name;
        //other variables defined
    };
    public void set_hp(int amount) //Adding hp
    {
        hp += amount;
    };
    public void set_hp(int amount,String type) //taking damage
    {
        mana += amount;
        //go through types, armor, etc.
            hp -= amount;
    };
    public void display stats() //displays all player's stats before choosing move
    {
        //display stats until...
        //later in some for loop
            System.out.println(players.get(index).get_hp());
            //here compiler throws error again: cannot find symbol
            //players arraylist is in main class's public variables
        //other stuff
    };
    //other stuff
};
public static ArrayList players = new ArrayList<player>();
public static ArrayList pdead = new ArrayList<String>();
public static ArrayList<player> players = new ArrayList<player>();
public static ArrayList<String> pdead = new ArrayList<String>();