我有一个功能接口,执行时会返回String。在此功能接口中,我通过一个类的实例,该类在调用时应引用该实例并获取该类内的当前值(此值在其他位置更新)。因此,此值会更改,并且每次执行功能接口时也会更新,因为它引用了此类和变量。
有很多代码,为简单起见...
我的LineExecution界面:
@FunctionalInterface
public interface LineExecution {
String execute(Player p);
}
我的记分板课程: https://pastebin.com/0aHa81eA
我在此处更新state#getReferencedTime
值:
@Override
public void run() {
Logger.debug("setting referenced time");
Logger.debug("EXECUTIONA: " + execution.execute(a.getPlayers().stream().findFirst().orElse(null).getPlayer()));
state.setReferencedTime(i);
Logger.debug("getting referenced time: " + state.getReferencedTime());
a.getPlayers().forEach(p -> {
Logger.debug("updating... state: " + state.getReferencedTime());
GameBoard g = state.getGameBoard(p.getPlayer());
g.update(p.getPlayer());
});
i--;
}
这是控制台中打印的内容: https://pastebin.com/bUC5sBQj
这是我的“ GameBoard”类:
public class GameBoard extends Scoreboard {
public GameBoard(GameBoardType type, GameStateManager state) {
super(type.getTitle());
addLine(p -> {
return "stateRef: " + state.getReferencedTime();
}, Bukkit.getOfflinePlayer("Realmm").getPlayer());
}
}
因此,我只想能够更新state.getReferencedTime
,就像我在run()
中所做的那样,然后,当我再次通过调用GameBoard#update(Player)
执行该功能接口时,它应该显示9
,倒数直到0
。但这始终显示10
,无论是否更改值。