如何在另一种方法中获取变量值 - 对如何继续

时间:2017-03-28 16:22:08

标签: java bukkit

我对Java很陌生(我在Stackoverflow上也提出了第一个问题),现在我正在努力将如何将方法中定义的变量值传递给另一个。

我已经对全局变量,ArrayList,HashMap等进行了多次搜索,但这似乎是我搜索的唯一内容( Global variables in Java)让我对如何进行更加困惑。

我尝试使用ArrayList,但它无法正常工作 - 而且我不知道我是否可以将它用于我想要的日子......

这是我的代码:

public static void creationGuilde(String[] args, Player player, String playerName)
{
    String nomGuilde = args[2];
    String message1 = "Votre nouvelle guilde se nommera " + nomGuilde + ".";
    TextComponent confirmer = new TextComponent("Cliquez ici pour confirmer");
    TextComponent annuler = new TextComponent("cliquez ici pour annuler");
    String message2 = confirmer + "OU" + annuler + ".";
    player.sendMessage(message1);
    player.sendMessage(message2);
    confirmer.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/creationGuildeConfirmer"));
    annuler.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/creationGuildeAnnuler"));
}

private void onPreCreationGuildeCommand(PlayerCommandPreprocessEvent event)
{
    if (event.getMessage().equals("creationGuildeConfirmer"))
    {
        String guilde = CommandeGuilde.creationGuilde(nomGuilde);
        event.getPlayer().sendMessage("Félicitations! Vous venez de créer la guilde " +guilde); // <-- Here, trying to get the value of 'guilde' in the 'creationGuilde' method...
    }
}

我想要做的是来自&#34; onPreCreationGuildeCommand&#34;方法,我想获得&#39; nomGuilde&#39;来自&#34; creationGuilde&#34;把它放在我最后一个sendMessage上的方法。

我希望我的问题足够明确。感谢您帮助我。

2 个答案:

答案 0 :(得分:0)

您可以在方法,全局变量之外定义变量nonGuilde。当您定义全局变量时,您可以“写”或从此类的所有方法中获取此变量。 第二种解决方案是从creationGuilde方法返回nonGuilde。

答案 1 :(得分:0)

最简单且可能最好的解决方案是将nonGuilde定义为全局变量 代码应如下所示:

class YourClassName{
    //Must be null
    //otherwise if you call onPreCreationGuildeCommand before creationGuilde
    //you would get error because variable hasn't been initialized
    private String nomGuilde = null;

    public static void creationGuilde(String[] args, Player player, String playerName){
        //set the value
        //value will persist outside the method because variable is global
        nomGuilde = args[2];
    }

    private void onPreCreationGuildeCommand(PlayerCommandPreprocessEvent event){
        // Here you can do anything with variable, for example:
        System.out.println(nomGuilde);
    }
}

我对你的建议是阅读一些关于变量及其范围(特定变量可见的代码块)及其生命周期(变量在内存中存在多长时间)的一些内容。