繁体   English   中英

为什么这个程序抛出java.lang.UnsupportedOperationException

[英]Why is this program throwing java.lang.UnsupportedOperationException

import java.util.Map;

class Test {
    public static void main(String[] args) {
        Map<String, String> env = System.getenv();
        System.out.println(env);
        env.put("ID", "1");
    }
}

我在初始化时添加一些键值对,然后再添加一个键值对,这样程序有什么问题?

不,你无法修改返回的地图。

System#getEnv()返回不可修改的地图

返回当前系统环境的不可修改的字符串映射视图。

原因是地图包含有关正在运行的系统的信息,您不能简单地以编程方式添加信息。

我在初始化时在地图中添加了一些键值对

不你不是。 您正在初始化Map引用变量env ,以引用由System.getEnv()调用返回的预先存在的映射。

然后再添加一个键值对,这样程序有什么问题?

如上所述,您是第一次尝试添加键值对。 地图的Javadoc。 它说put方法是一个可选操作。 实际上, getEnv()返回的映射类型不支持put()

你究竟想做什么? 如果要更改子进程的环境,请使用ProcessBuilder类,该类允许您指定其他环境变量。 如果您正在尝试更改当前进程的环境,那么只需创建自己的私有Map,将getEnv()所有条目复制到其中,然后在您需要的任何地方使用您自己的映射而不是getEnv()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM