簡體   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