Подтвердить что ты не робот

В чем разница между System.getProperty и свойствами .getProperty в Java

У меня есть файл свойств с именем prop.properties. В моем основном коде у меня есть как System.getProperty(), так и properties.getProperty().

Мой вопрос: оба они получают свойство из prop.properties или они получат свойство из разных мест, properties.getProperty() получить свойство из prop.properties и System.getProperty() получить свойство из другого места.

4b9b3361

Ответ 1

System.getProperty() получает свойство, определенное JVM (либо сам JVM, либо любые опции -D, которые вы, возможно, прошли на командная строка). Список определенных свойств можно найти здесь (спасибо @НикитаБелоглазова).

properties.getProperty() является результатом того, что кто-то инициализировал объект типа Properties. Они не совпадают, хотя вы можете получить то, что System имеет как экземпляр Properties.

Объект A Properties очень часто является результатом загрузки файла свойств Java (см. здесь, как это делается)

Ответ 2

System.getProperty(propName) является ярлыком для System.getProperties().getProperty(propName).

Однако java.util.Properties является просто подклассом java.utils.Hashtable, поэтому его экземпляр может быть создан везде в коде и заполнен любыми данными. Очевидно, код

Properties props = System.getProperties();
props.getProperty("os.name");

совпадает с

System.getProperty("os.name");

Однако

Properties props = new Properties();
props.load(new FileInputStream("myprops.properties"))
props.getProperty("os.name");

не то же самое.

Ответ 3

Класс System относится к JVM, который вы используете (который будет получать информацию из вашей ОС). Когда вы используете getProperty на System, вы получаете фактические свойства.

Класс Property - это, в основном, прославленная хеш-таблица. Вы можете полностью определить его самостоятельно, поэтому, когда вы делаете getProperty(), вы получаете результаты, которые вы настроили. Полезность класса Property заключается в том, что он имеет встроенный синтаксический анализатор XML, поэтому вы можете читать свойства из файла.