Разница между "get" VS "getProperty" - программирование
Подтвердить что ты не робот

Разница между "get" VS "getProperty"

Properties myProp = new Properties();
myProp.put("material", "steel");

Properties prop1 = new Properties(myProp);

System.out.println(prop1.get("material") + ", " + prop1.getProperty("material"));
// outputs "null, steel"

Не похоже на getProperty в том смысле, что он возвращает записи/атрибуты объект? Почему он не возвращает "сталь" при использовании get?

4b9b3361

Ответ 1

get наследуется от Hashtable и объявляется как return Object.

getProperty вводится Properties и объявляется как возвращаемый String.

Обратите внимание, что getProperty будет обращаться к свойствам по умолчанию, которые вы можете передать в конструктор для Properties; get не будет. В большинстве случаев они возвращают одинаковое значение. В приведенном примере вы используете свойства поддержки по умолчанию:

  • prop1 не содержит прямую запись для "material", поэтому почему get возвращает значение null.
  • myProp содержит запись для "material", поэтому, когда вы вызываете prop1.getProperty("material"), он обнаружит, что он не имеет его напрямую, и вместо этого зайдите в myProp и найдите "steel".

Ответ 2

Посмотрите на docs показывает, что get наследуется и возвращает Object, тогда как getProperty является членом Properties и возвращает String.

Похоже, они должны вернуть то же самое, однако из docs:

Если ключ не найден в этом списке свойств, тогда проверяется список свойств по умолчанию и его рекурсивные значения по умолчанию.

Поэтому лучше использовать getProperty, поскольку он вернет значение по умолчанию, если оно не найдено.

Ответ 3

Второй объект Properties (props или prop1?) не имеет свойств, добавленных непосредственно к нему. Он использует только myProp как значения по умолчанию. Таким образом, эти значения никогда не добавляются в резервную копию HashMap. Properties.getProperty() не находит "материал" в базе данных HashMap, чтобы он мог смотреть по умолчанию. Но унаследованный HashMap.get() выглядит только в резервной HashMap, а не в значениях по умолчанию, которые вы передали в конструктор.