Если вы видите исходный код система класса он имеет следующий переменного класс
private static Properties props;
As для свойств класса, вы можете думать о нем, как HashMap. Он фактически расширяет HashMap.
public class Properties extends Hashtable<Object,Object>
Когда вы звоните
setProperty(String key, String value)
он на самом деле делает
props.setProperty(key, value);
Это только краткие (чеки менеджер безопасности также участвуют).
Теперь почему я сказал, что это экземпляр JVM?
При запуске Java-процесса создается отдельный экземпляр JVM, который запускает ваш процесс. Кроме того, поскольку реквизит является переменной класса (а не переменной экземпляра), только одна копия будет присутствовать в соответствующем экземпляре класса, который будет установлен при загрузке этого класса. Теперь это предполагает, что у вас нет каких-либо пользовательских загрузчиков классов, в этом случае поведение может быть другим. Но для упрощенного сценария вы System.setProperty()
и System.getProperty()
зададите свойства системы, к которым вы можете получить доступ через любой класс, выполняемый как часть этого java-процесса (JVM).
Это экземпляр JVM. –
на экземпляр JVM? Аникет Тхакур, не могли бы вы рассказать мне больше? –
Почему бы не прочитать [System javaadocs] (http://docs.oracle.com/javase/7/docs/api/java/lang/System.html) для 'getProperties' и' setProperties' и сделать немного от попыток ... – A4L