Java 如何在顶部的if中使用sp变量?
我正在使用API开发Minecraft Bukkit插件。 我遇到的问题是,我想在下面的代码中使用sp变量,以检查它是否在顶部的if语句中使用.isplay()(API的一种方法)播放。问题是,sp变量是在if语句中创建的。那么,当再次运行该方法时,如何在if语句中使用该sp变量呢 如果我不够清楚,告诉我。 另外,我对java还很陌生,所以请记住这一点 -贾斯特拉蒙Java 如何在顶部的if中使用sp变量?,java,minecraft,bukkit,Java,Minecraft,Bukkit,我正在使用API开发Minecraft Bukkit插件。 我遇到的问题是,我想在下面的代码中使用sp变量,以检查它是否在顶部的if语句中使用.isplay()(API的一种方法)播放。问题是,sp变量是在if语句中创建的。那么,当再次运行该方法时,如何在if语句中使用该sp变量呢 如果我不够清楚,告诉我。 另外,我对java还很陌生,所以请记住这一点 -贾斯特拉蒙 public void playTune(String eventTune, Player p) { if (Method
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);
}
}
首先,如果希望通过多次调用方法来访问对象,则需要对象的引用。因此,您应该在类中声明一个变量,如下所示: 然后按如下方式更改您的方法:
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
方法的问题。再想一想:只有当某些条件为真时,才需要创建对象。另一方面,在检查该条件时,您希望该对象已经存在。那根本不起作用。只需在then块中放置第二个if,在sp创建后立即对其进行检查。顺便说一句:不要使用单字符名称。他们什么也没说。最好叫他们player或songPlayer。。。
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
}
}