【问题标题】:Java Getters/SettersJava Getter/Setter
【发布时间】:2014-09-13 23:36:39
【问题描述】:

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

【问题讨论】:

  • 我一个字都听不懂。你在找什么?
  • nPlayerPlayer有什么区别?
  • 如果以下任何答案对您有帮助,请您标记一下吗?

标签: java getter-setter bukkit


【解决方案1】:

你创建一个实例

nPlayer nplayer = new nPlayer();

“nplayer”是变量名,随便选一个。如果要在重新打开程序时访问数据,则必须将此实例的数据保存在某处。 如果那里有实例(在本例中为“nplayer”),则可以这样访问数据:

boolean b = nplayer.getAdmin();

我应该提一下,你通常总是用第一个大写字母来写类名,那就是“NPlayer”。

【讨论】:

  • 我会注意类名的首字母大写谢谢。我将如何在定义的方法之外访问该 NPlayer 实例的信息?
  • @user3577360:这是不可能的。您必须将变量的指针提供给该方法。在 Java 中,它只是变量名。例如:“void someMethod(NPlayer nplayer) { ... }
【解决方案2】:

很难准确理解您所说的内容,但我假设您询问如何获取有关存储在 nPlayer 中的 Player 的信息。

获取与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();
}

....

}

【讨论】:

  • Player 实际上来自我正在使用的库,因此我使用自己的库来存储我自己的变量。
  • @user3577360 只需扩展播放器以包含这些属性。 nPlayer 扩展 Player,然后将 nPlayer 用于您的所有代码。
【解决方案3】:

当用户连接时,创建一个 nPlayer 实例并将其附加到会话中。然后在需要时,只需从会话中检索对象并通过 setter 和 getter 访问其变量。

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

【讨论】:

    【解决方案4】:

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

    实际解决方案:

    您不应该将类名用作字段名,因为编译器可能会混淆实例的静态方法,二,这就是类名以大写字母开头的原因。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多