我为连接到我的服务器的每个用户创建了nPlayer
的新实例。
nPlayer nPlayer = new nPlayer(player);
nPlayer
类包含以下内容,其中包含一些用于获取私有变量详细信息的其他方法。
private Player player;
private boolean muted;
private boolean admin;
private boolean mod;
private boolean pvp;
public nPlayer(Player player) {
player = player;
muted = false;
admin = false;
}
在nPlayer
类中获取变量详细信息的方法示例。
public boolean getAdmin() {
return admin;
}
我想知道如何从另一个类的特定用户的Nplayer中获取管理变量?
答案 0 :(得分:1)
使用
创建实例nPlayer nplayer = new nPlayer();
" nplayer"是变量的名称,选择一个你喜欢的名称。如果要在重新打开程序时访问数据,则必须将此实例的数据保存在某处。 如果你有实例(在这种情况下' nplayer'),你可以访问这样的数据:
boolean b = nplayer.getAdmin();
我应该提一下,你通常用第一个字母大写来写类名,那就是" NPlayer"。
答案 1 :(得分:0)
很难准确理解您的说法,但我假设您在询问如何获取Player
中存储的nPlayer
信息。
获取与nPlayer
相关联的播放器。
public Player getPlayer(){
return player;
}
获取有关player
public String getPlayerName(){
return player.getName();
}
修改强>
让我做对了你想要能够得到一个玩家,让我们从游戏中的其他方法中调用它network state
。我认为你只是错误地组织你的代码。为什么不将播放器的网络状态存储在Player
之上,而不是将nPlayer
附加到player
?这样您只需加载就可以将所有信息存储在播放器中,并且可以随时随地访问它。
Class Player {
NetworkState network;
public void connectPlayer(NetworkState network){
this.network = network;
}
public boolean isAdmin(){
return network.isAdmin();
}
....
}
答案 2 :(得分:0)
当用户连接时,创建nPlayer的实例并将其附加到会话。然后在需要时,只需从会话中检索对象并通过setter和getters访问其变量。
答案 3 :(得分:0)
对于初学者:不要存储Player实例。存储它们的UUID以防止内存泄漏。
实际解决方案:
你不应该使用类名作为字段名,因为编译器可能会混淆实例的静态方法,以及两个,这就是为什么类名以大写字母开头。
修复后,可以使用实例名称.getAdmin()来获取布尔值。您可以将其插入到if检查中,如果返回true则执行某些操作。