【问题标题】:java System.getProperties().put();java System.getProperties().put();
【发布时间】:2017-04-27 08:36:03
【问题描述】:

我在一个旧项目上工作,并且有以下行:

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

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

【问题讨论】:

  • 之后您可以立即通过另一个getProperties 进行检查。请回来报告。

标签: java properties system


【解决方案1】:

它不会更改您程序之外的系统属性。

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

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

所以实际上,在你的程序中System.getProperties().get("http.proxyHost")返回的值被改变了。

【讨论】:

    【解决方案2】:

    是的,它有效:

    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
    

    【讨论】:

      【解决方案3】:

      您的代码只会修改 System.getProperties() 调用返回的对象。 但似乎下一个调用者使用相同的属性对象。所以,答案是肯定的。

      【讨论】:

      • Javadoc(可以更清楚地确定)听起来好像该对象是一个也将返回给后续调用者的单例。
      • 是的。谢谢@Thilo。编辑了答案。
      猜你喜欢
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多