在 类 之间传递一个值

Passing a value between classes

我需要将字符串从class传递到Java(Bukkit)中的另一个class,我已经阅读了一些类似的问题,但我无法解决问题.

我有一个主class

    public class Main extends JavaPlugin {

    @Override
    public void onEnable() {

        new PlayerListener(this);

        this.saveDefaultConfig();

        String bannedBlocksString = this.getConfig().getString("bannedBlocks");
    }

    @Override
    public void onDisable() {

    }

}

还有一个class"PlayerListener"

    public class PlayerListener implements Listener {

    public PlayerListener(Main plugin) {
        plugin.getServer().getPluginManager().registerEvents(this, plugin);
    }

    // public static final String bannedBlocksString = "DIAMOND_BLOCK; EMERALD_BLOCK";

    public static final String[] bannedBlocks = bannedBlocksString.split("; ");

    public static boolean isBannedBlock(String[] bannedBlocks, String blockPlaced) {
        boolean returnValue = false;
        for (String bannedBlock : bannedBlocks) {
            if(blockPlaced.equalsIgnoreCase(bannedBlock)){
                returnValue = true;
            }
        }
        return returnValue;
    }

    @EventHandler
    public void onBlockPlace(BlockPlaceEvent event) {

        String blockPlaced = event.getBlockPlaced().getType().toString();

        if(!event.getPlayer().hasPermission("antibuild.block.noplace") && isBannedBlock(bannedBlocks, blockPlaced)) {
            event.setCancelled(true);
            event.getPlayer().sendMessage(ChatColor.RED + "You can not place this block.");
        }

    }

}

如何从 class "PlayerListener" 中获取 Main 中 bannedBlocksString 的值?

试试这个,我希望它有效:

来自主要:

    PlayerListener pl = new PlayerListener(this);

    this.saveDefaultConfig();

    String [] bannedBlocksString = pl.getBannedBlocks();

您必须从 PlayerListener 声明 get 方法:

 public String [] getBannedBlocks(){
 return this.bannedBlocks;

}

如果您在 PlayerListener 中取消对 bannedBlocksString 的注释,那么您始终可以在 Main class 中使用 PlayerListener.bannedBlocksString 访问它,因为该变量是静态的。

如果您想以相反的方式进行并分配您需要从变量中删除 final 并使用下面的代码的值。

    PlayerListener.bannedBlocks = bannedBlocksString.split("; ");