当我创建一个示例时,我在那个示例中创建了一个arraylist,我得到了一个精确示例的指针,但是当我向那个arraylist添加项时,它并没有添加它,而是添加到一个类似于“public”列表的列表中。。。当配对被发现时,它会抓取配对中2个玩家的socketchannel id,并将他们添加到一个创建的房间中(至少应该如此),但它不会。。。
以下是在room类中创建arraylist的方法:
private static ArrayList<SocketChannel> room_players = new ArrayList<SocketChannel>();
这是在配对中发现2个玩家时的代码:
room Room = new room(); //
System.out.println("Making a new room");
ArrayList<SocketChannel> player_list = Room.getPlayerList();
SocketChannel s1 = matchmakingPlayers.get(i);
SocketChannel s2 = matchmakingPlayers.get(i-1);
_main.rooms.add(Room);
player_list.add(s1);
player_list.add(s2);
这是连接了2个客户端时的输出:
2 Players were found
Making a new room
Number of players in room: 2
但是当我已经有两个玩家在游戏中并且我想匹配新的2时,输出是:
2 Players were found
Making a new room
Number of players in room: 4
非常感谢您的帮助和建议!
2条答案
按热度按时间bf1o4zei1#
但是我现在如何从其他类访问它呢?
有不同的方法:您可以将成员从私有更改为公共。。。
您可以创建一个公共方法来获取值。。。
你也可以把这个班变成一个单身学生。如果您只想共享类的一个示例,并且可以从应用程序中的任何位置进行访问。也许这对你来说毫无意义。信息:https://www.journaldev.com/1377/java-singleton-design-pattern-best-practices-examples
mwecs4sa2#
自
room_players
是静态成员,由类的所有示例共享。卸下static
修饰符会给每个Room
示例它是该变量的单独示例。