在 类 之间传递一个值
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("; ");
我需要将字符串从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("; ");