Java Getters / Setters

时间:2014-07-22 23:17:00

标签: java getter-setter bukkit

我为连接到我的服务器的每个用户创建了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中获取管理变量?

4 个答案:

答案 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访问其变量。

如何在会话中存储对象:How do you store Java objects in HttpSession?

答案 3 :(得分:0)

对于初学者:不要存储Player实例。存储它们的UUID以防止内存泄漏。

实际解决方案:

你不应该使用类名作为字段名,因为编译器可能会混淆实例的静态方法,以及两个,这就是为什么类名以大写字母开头。

修复后,可以使用实例名称.getAdmin()来获取布尔值。您可以将其插入到if检查中,如果返回true则执行某些操作。