首先上错误代码

public static final Map<String, List<Home>> PLAYER_HOME = new Hashtable<>();

    public static boolean addHome(Player player, String homeName) {
        if (PLAYER_HOME.isEmpty() || !PLAYER_HOME.containsKey(player.getName())) {
            PLAYER_HOME.put(player.getName(), List.of(new Home(homeName, player.getLocation())));
            return true;
        }
        for (Home home : PLAYER_HOME.get(player.getName())) {
            if (homeName.equals(home.getHomeName())) {
                return false;
            }
        }
        PLAYER_HOME.get(player.getName()).add(new Home(homeName, player.getLocation()));
        HomeFiles.saveHomeData();
        return true;
    }

第一次调用不会报错,而第二次修改相同键值对时,就会报错 UnsupportedOperationException

问题出在 List.of(new Home(homeName, player.getLocation())) 上 通过 List.ofArrays.asList 方法产生的 List 对象,其实是而是java.util.Arrays 类中的一个内部类,并不是正常的 java.util.ArrayList

ねぇ,あなたは何色になりたい