我真的不明白!
我运行包含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
,因为remove
在Properties
中没有被覆盖,所以不影响默认属性列表。
因此,清除的属性很可能仍然通过getProperty
可见,因为System
javadoc没有指定系统Properties
是分层的还是平面的。