java System.getProperties().put();

java System.getProperties().put();,java,properties,system,Java,Properties,System,我在一个老项目中工作,有以下几行: System.getProperties().put("http.proxyHost", proxyHost); 此行是否更改了系统属性http.proxyHost?您的代码将只修改system.getProperties()调用返回的对象。 但下一个调用方似乎使用相同的properties对象。因此,答案是肯定的。是的,它有效: System.getProperties().put("http.proxyHost", "1.2.3.4"); String

我在一个老项目中工作,有以下几行:

System.getProperties().put("http.proxyHost", proxyHost);

此行是否更改了系统属性http.proxyHost?

您的代码将只修改system.getProperties()调用返回的对象。 但下一个调用方似乎使用相同的properties对象。因此,答案是肯定的。

是的,它有效:

System.getProperties().put("http.proxyHost", "1.2.3.4");
String x = (String) System.getProperties().get("http.proxyHost");
System.out.println(x); // prints 1.2.3.4

它不会更改程序外部的系统属性

System.getProperties()
返回一个
Properties
对象。每次调用
getProperties()
方法都会返回相同的对象

但是您可以在这个对象中添加或覆盖属性,这是通过调用
put
完成的


因此实际上,在您的程序中,
System.getProperties().get(“http.proxyHost”)
返回的值会发生更改。

您可以立即通过另一个
getProperties
进行检查。请报告。Javadoc(可以更清楚地确定)使它听起来像是一个也将返回给后续调用方的单例对象。是的。谢谢@Thilo。编辑了答案。