タスクのスケジューリングからの戻り値を匿名クラスに渡そうとしていますが、問題が発生しています。戻り値を最終変数に設定すると、初期化されていないと表示されます。
/* Not initialized */
final BukkitTask task = Bukkit.getScheduler().runTaskTimer(plugin, new Runnable() {
public void run() {
/* irrelevant code */
task.cancel();
}
}, 0L, 20L);
また、匿名クラス内でメソッドを呼び出して変数を渡そうとしましたが、戻り値の型が void に変更されるため、適切な値を渡すことができません。
BukkitTask temp = null;
/* Returns void */
temp = Bukkit.getScheduler().runTaskTimer(plugin, new Runnable() {
private BukkitTask task;
public void initTask(BukkitTask task) {
this.task = task;
}
public void run() {
/* irrelevant code */
task.cancel();
}
}.initTask(temp), 0L, 20L);
戻り値をコード内の匿名クラスに渡すにはどうすればよいですか?