Java 实例内部的Arraylist不是私有的

Java 实例内部的Arraylist不是私有的,java,class,arraylist,Java,Class,Arraylist,当我创建一个实例时,我在该实例中创建了一个ArrayList,我得到了该实例的一个指针,但当我向该ArrayList添加项时,它并没有将其添加到该实例中,而是像一个公共列表一样添加到该实例中。。。 当配对被发现时,它会抓取配对中2名玩家的SocketChannel id,并将他们添加到至少应该创建的房间中,但它不会 以下是我在room类中创建ArrayList的方法: private static ArrayList<SocketChannel> room_players = new

当我创建一个实例时,我在该实例中创建了一个ArrayList,我得到了该实例的一个指针,但当我向该ArrayList添加项时,它并没有将其添加到该实例中,而是像一个公共列表一样添加到该实例中。。。 当配对被发现时,它会抓取配对中2名玩家的SocketChannel id,并将他们添加到至少应该创建的房间中,但它不会

以下是我在room类中创建ArrayList的方法:

private static ArrayList<SocketChannel> room_players = new ArrayList<SocketChannel>();
但是当我有2名玩家已经在游戏中,并且我想匹配新的2名玩家时,输出是:

2 Players were found
Making a new room
Number of players in room: 4
非常感谢您提供的任何帮助或建议

因为room_players是静态成员,所以它由类的所有实例共享。删除静态修改器将为每个房间实例提供该变量的单独实例

private final List<SocketChannel> room_players = new ArrayList<>();
但是我现在如何从其他类访问它呢

有不同的方法: 您可以将成员从私人更改为公共

public final List<SocketChannel> room_players = new ArrayList<>();
您可以创建一个公共方法来获取值

public List<SocketChannel> getRoom_players() {
    return room_players;
}

您还可以将该类设置为单例。如果您希望只共享类的一个实例,并且可以从应用程序中的任何位置访问该实例。也许这对你来说毫无意义。信息:

非常感谢!但是我现在如何从其他类访问它呢?使用getter方法。@BMatjasic您可以将它设置为一个单例类,然后为该属性创建一个getter。private在Java中的意思是对一个类及其嵌套类来说是private。这并不意味着对单个实例是私有的。因此,即使删除了静态变量,在另一个实例中的方法调用在某些情况下仍然可以查看和修改私有变量;???你的肠衣翻了。Java命名约定是类名以大写字母开头,变量名以小写字母开头,所以应该是Room=newroom;另外,我建议您对接口编程,并使用List=newarraylist;而不是ArrayList list=新建ArrayList;嗯,但是当我试图获取一个实际的列表时,我遇到了一个问题:ArrayList p_list=getPlayerList;我需要将room_播放器更改为静态…也许您正试图从静态上下文访问room_播放器,您能否发布更多代码,以便我们了解整体视图?
public final List<SocketChannel> room_players = new ArrayList<>();
public List<SocketChannel> getRoom_players() {
    return room_players;
}