Ответ 1
Если свойство не определено в объекте Properties
, тогда getProperty
будет искать в родительском объекте Properties
Properties
javadoc говорит:
public String getProperty(String key)
Ищет свойство с указанным ключом в этом списке свойств. Если ключ не найден в этом списке свойств, тогда проверяется список свойств по умолчанию и его рекурсивные значения по умолчанию. Метод возвращает
null
, если свойство не найдено.
clearProperty
вызывает Hashtable.remove
, поскольку remove
не переопределяется в Properties
, поэтому не влияет на список свойств по умолчанию.
Таким образом, вполне возможно, что очищенное свойство все еще будет видимым через getProperty
, так как System
javadoc не указывает, является ли система Properties
слоистой или плоской.