如何在顶部的 if 中使用 sp 变量?

How can I use the sp variable in the if at the top?

我正在开发一个 Minecraft Bukkit 插件,使用 this API。 我遇到的问题是我想在下面的代码中使用 sp 变量,检查它是否正在使用 .isplaying() (API 的一种方法),在 if 语句中最佳。问题是,sp 变量是在 if 语句中创建的。那么,当方法再次为 运行 时,如何在 if 语句中使用该 sp 变量?

如果我不够清楚,请告诉我。 另外,我对 java 很陌生,所以请记住这一点。

-JustRamon

public void playTune(String eventTune, Player p)
{
    if (Methods.getSongPath(eventTune).exists()) //&& sp.isplaying()
    {
            Song s = NBSDecoder.parse(Methods.getSongPath(eventTune));
            SongPlayer sp = new RadioSongPlayer(s);
            sp.setAutoDestroy(true);
            sp.addPlayer(p);
            sp.setPlaying(true);
    }
    else
    {
            notFound(eventTune);
    }
}

首先,如果您想通过多次调用您的方法来访问该对象,您需要对该对象的引用。因此,您应该在 class 中声明一个变量,如下所示:

private SongPlayer sp; 

然后改变你的方法如下:

public void playTune(String eventTune, Player p)
{
    /*Creates sp if it is null (When it is null, we know that there is no
    RadioSongPlayer object referenced by sp)*/
    if (Methods.getSongPath(eventTune).exists()) && sp == null)
    {
            Song s = NBSDecoder.parse(Methods.getSongPath(eventTune));
            sp = new RadioSongPlayer(s);
            sp.setAutoDestroy(true);
            sp.addPlayer(p);
            sp.setPlaying(true);
    }
    else
    {
            notFound(eventTune);
    }
    //Now that sp is not null, we know that it references a SongPlayer object, that is,
    //the object we just created in the first if statement
    if(sp != null){ /
        //sp was created
        //Use sp
    }
}

不过我不建议你这样做。最好将您的第一个 if 重构为另一种方法,因为创建 SongPlayer 不应该成为您的 playTune 方法的关注点。