java如何创建一个管理器类来保存某些变量而不滥用静态变量?
这里是javan00b。我正在为Minecraft服务器制作一个插件,我想使用一个类来保存插件的所有变量:
public class BwMgr {
Boolean enabled = false;
final HashSet<Player> red = new HashSet<>();
final HashSet<Player> green = new HashSet<>();
final HashSet<Player> blue = new HashSet<>();
final HashSet<Player> orange = new HashSet<>();
final HashSet<Player> purple = new HashSet<>();
final HashSet<Player> yellow = new HashSet<>();
final HashSet<Player> black = new HashSet<>();
final HashSet<Player> white = new HashSet<>();
public void assignTeams() {
}
}
每个哈希集都应该包含一组玩家。其他类将访问布尔值以确定插件是否已启用:
public class BwListener implements Listener {
private final BwMgr bwMgr = new BwMgr();
@EventHandler
public void onPlayerJoinEvent(PlayerJoinEvent e) {
if (bwMgr.enabled) {
// do stuff
}
}
}
enabled
应在此处更新:
public class BwCmd implements CommandExecutor {
private BwMgr bwMgr = new BwMgr();
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("bw")) {
if (args[0].equalsIgnoreCase("enable")) {
bwMgr.enabled = true;
} else if (args[0].equalsIgnoreCase("disable")) {
bwMgr.enabled = false;
}
}
return false;
}
}
当然,因为每个类都使用不同的BwMgr
实例,所以它们使用不同版本的布尔enabled
。我可以把static
放在BwMgr
中所有东西的前面,但我觉得那是虐待。任何想法都将不胜感激
# 1 楼答案
您需要通过BwCmd和bwstener的构造函数传递相同的
BwMgr
实例所以在BwCmd中应该是这样的:
BwListener类:
在你的主要课堂上: