系统清除属性不起作用。怎么可能?



我真的不明白!

我运行包含cod的单元测试:

  String progDir = "prog.dir";
  System.clearProperty(progDir);
  System.out.println(System.getProperty(progDir));

在控制台上我看到progdir路径。虽然必须是空的

在安装程序块中设置这个变量。这是单元测试。这个变量需要所有其他测试,但不需要,所以我试图在这个测试方法的开始清理它。如果我从安装块中删除这个变量的设置,这个测试将通过。

系统。

怎么可能呢?谢谢

如果在Properties对象中没有定义属性,那么getProperty将查找父Properties对象

Properties javadoc说:

public String getProperty(String key)

在此属性列表中搜索具有指定键的属性。如果在此属性列表中没有找到该键,则会递归地检查默认属性列表及其默认值。如果没有找到该属性,该方法返回null

clearProperty调用Hashtable.remove,因为removeProperties中没有被覆盖,所以不影响默认属性列表。

因此,清除的属性很可能仍然通过getProperty可见,因为System javadoc没有指定系统Properties是分层的还是平面的。

最新更新