Класс AbstractPreferences
public abstract class AbstractPreferences extends Preferences
Preferences, значительно упрощая задачу его реализации. Этот класс предназначен только для разработчиков Preferences. Обычным пользователям средства Preferences нет необходимости обращаться к этой документации. Достаточно документации Preferences.
Разработчики должны переопределить девять абстрактных методов интерфейса поставщика услуг (SPI): getSpi(String), putSpi(String,String), removeSpi(String), childSpi(String), removeNodeSpi(), keysSpi(), childrenNamesSpi(), syncSpi() и flushSpi(). Все конкретные методы точно определяют, как они реализуются на основе этих методов SPI. Разработчик может по своему усмотрению переопределить один или несколько конкретных методов, если реализация по умолчанию по какой-либо причине неудовлетворительна, например из-за производительности.
Методы SPI подразделяются на три группы в зависимости от поведения при возникновении исключений. Метод getSpi никогда не должен выбрасывать исключения, однако это не имеет большого значения, поскольку любое исключение, выброшенное этим методом, будет перехвачено методом get(String,String), который вернёт вызывающему коду указанное значение по умолчанию. Методы removeNodeSpi, keysSpi,
childrenNamesSpi, syncSpi и flushSpi должны выбрасывать BackingStoreException; реализация обязана выбросить это проверяемое исключение, если не может выполнить операцию. Исключение распространяется наружу, приводя к сбою соответствующего метода API.
Оставшиеся методы SPI putSpi(String,String), removeSpi(String) и childSpi(String) имеют более сложное поведение при возникновении исключений. Они не должны выбрасывать BackingStoreException, поскольку в общем случае могут выполнять свои контракты, даже если хранилище недоступно. Это возможно потому, что они не возвращают никаких сведений, а их результаты не обязаны становиться постоянными до последующего вызова Preferences.flush() или Preferences.sync(). Как правило, эти методы SPI не должны выбрасывать исключения. В некоторых реализациях могут возникнуть обстоятельства, при которых эти вызовы не могут даже поставить запрошенную операцию в очередь для последующей обработки. Даже в таких обстоятельствах обычно лучше просто проигнорировать вызов и вернуться, а не выбрасывать исключение. Однако в этом случае последующий вызов flush() или sync не будет означать, что все предыдущие операции были успешно сохранены постоянно.
Есть одно обстоятельство, при котором putSpi, removeSpi and
childSpi следует выбросить исключение: если у вызывающего кода недостаточно привилегий в базовой операционной системе для выполнения запрошенной операции. Например, такое происходит в большинстве систем, когда непривилегированный пользователь пытается изменить системные настройки. (Необходимые привилегии различаются в разных реализациях. В некоторых реализациях это право изменять содержимое каталога файловой системы, в других — право изменять содержимое раздела реестра.) В подобных обстоятельствах обычно нежелательно позволять программе продолжать работу так, будто эти операции позднее станут постоянными. Хотя реализации не обязаны выбрасывать исключение в таких обстоятельствах, им рекомендуется это делать. Подходящим вариантом будет SecurityException.
Большинство методов SPI требуют от реализации считывать или записывать сведения в узел настроек. Разработчику следует учитывать, что другая виртуальная машина могла одновременно удалить этот узел из хранилища. Если узел был удалён, реализация обязана создать его заново.
Примечание по реализации: в стандартных реализациях Preferences Sun удостоверение личности пользователя наследуется от базовой операционной системы и не меняется в течение времени жизни виртуальной машины. Известно, что в серверных реализациях Preferences удостоверение личности пользователя может меняться от запроса к запросу и неявно передаваться методам Preferences с помощью статического экземпляра ThreadLocal. Авторам таких реализаций настоятельно рекомендуется определять пользователя в момент доступа к настройкам (например, в методе get(String,String) или put(String,String)), а не связывать пользователя с каждым экземпляром Preferences на постоянной основе. Последнее поведение противоречит обычному использованию Preferences и приведёт к большой путанице.
- С версии:
- 1.4
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected final Object |
lock |
Объект, монитор которого используется для блокировки этого узла. |
protected boolean |
newNode |
Это поле должно иметь значение true, если до создания этого объекта данный узел отсутствовал в хранилище. |
Поля, объявленные в классе Preferences
MAX_KEY_LENGTH, MAX_NAME_LENGTH, MAX_VALUE_LENGTH
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт узел настроек с указанным родительским узлом и указанным относительно него именем. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
String |
absolutePath() |
Реализует метод absolutePath согласно спецификации в Preferences.absolutePath(). |
void |
addNodeChangeListener |
Регистрирует указанный прослушиватель для получения событий изменения узлов этого узла. |
void |
addPreferenceChangeListener |
Регистрирует указанный прослушиватель для получения событий изменения настроек этого узла настроек. |
protected final AbstractPreferences[] |
cachedChildren() |
Возвращает все известные неудалённые дочерние узлы этого узла. |
String[] |
childrenNames() |
Реализует метод children согласно спецификации в Preferences.childrenNames(). |
protected abstract String[] |
childrenNamesSpi() |
Возвращает имена дочерних узлов этого узла настроек. |
protected abstract AbstractPreferences |
childSpi |
Возвращает дочерний узел с указанным именем, создавая его, если он ещё не существует. |
void |
clear() |
Реализует метод clear согласно спецификации в Preferences.clear(). |
void |
exportNode |
Реализует метод exportNode согласно спецификации в Preferences.exportNode(OutputStream). |
void |
exportSubtree |
Реализует метод exportSubtree согласно спецификации в Preferences.exportSubtree(OutputStream). |
void |
flush() |
Реализует метод flush согласно спецификации в Preferences.flush(). |
protected abstract void |
flushSpi() |
Этот метод вызывается, когда данный узел заблокирован. |
String |
get |
Реализует метод get согласно спецификации в Preferences.get(String,String). |
boolean |
getBoolean |
Реализует метод getBoolean согласно спецификации в Preferences.getBoolean(String,boolean). |
byte[] |
getByteArray |
Реализует метод getByteArray согласно спецификации в Preferences.getByteArray(String,byte[]). |
protected AbstractPreferences |
getChild |
Возвращает дочерний узел с указанным именем, если он существует, или null в противном случае. |
double |
getDouble |
Реализует метод getDouble согласно спецификации в Preferences.getDouble(String,double). |
float |
getFloat |
Реализует метод getFloat согласно спецификации в Preferences.getFloat(String,float). |
int |
getInt |
Реализует метод getInt согласно спецификации в Preferences.getInt(String,int). |
long |
getLong |
Реализует метод getLong согласно спецификации в Preferences.getLong(String,long). |
protected abstract String |
getSpi |
Возвращает значение, связанное с указанным ключом в этом узле настроек, или null, если с этим ключом ничего не связано либо в данный момент невозможно определить наличие связи. |
protected boolean |
isRemoved() |
Возвращает true, если этот узел (или его предок) был удалён методом removeNode(). |
boolean |
isUserNode() |
Реализует метод isUserNode согласно спецификации в Preferences.isUserNode(). |
String[] |
keys() |
Реализует метод keys согласно спецификации в Preferences.keys(). |
protected abstract String[] |
keysSpi() |
Возвращает все ключи, с которыми связано значение в этом узле настроек. |
String |
name() |
Реализует метод name согласно спецификации в Preferences.name(). |
Preferences |
node |
Реализует метод node согласно спецификации в Preferences.node(String). |
boolean |
nodeExists |
Реализует метод nodeExists согласно спецификации в Preferences.nodeExists(String). |
Preferences |
parent() |
Реализует метод parent согласно спецификации в Preferences.parent(). |
void |
put |
Реализует метод put согласно спецификации в Preferences.put(String,String). |
void |
putBoolean |
Реализует метод putBoolean согласно спецификации в Preferences.putBoolean(String,boolean). |
void |
putByteArray |
Реализует метод putByteArray согласно спецификации в Preferences.putByteArray(String,byte[]). |
void |
putDouble |
Реализует метод putDouble согласно спецификации в Preferences.putDouble(String,double). |
void |
putFloat |
Реализует метод putFloat согласно спецификации в Preferences.putFloat(String,float). |
void |
putInt |
Реализует метод putInt согласно спецификации в Preferences.putInt(String,int). |
void |
putLong |
Реализует метод putLong согласно спецификации в Preferences.putLong(String,long). |
protected abstract void |
putSpi |
Добавляет указанную пару «ключ—значение» в этот узел настроек. |
void |
remove |
Реализует метод remove(String) согласно спецификации в Preferences.remove(String). |
void |
removeNode() |
Реализует метод removeNode() согласно спецификации в Preferences.removeNode(). |
void |
removeNodeChangeListener |
Удаляет указанный NodeChangeListener, чтобы он больше не получал события об изменениях. |
protected abstract void |
removeNodeSpi() |
Удаляет этот узел настроек, делая его и все содержащиеся в нём настройки недействительными. |
void |
removePreferenceChangeListener |
Удаляет указанный прослушиватель изменений настроек, чтобы он больше не получал события об изменении настроек. |
protected abstract void |
removeSpi |
Удаляет связь (если она есть) с указанным ключом в этом узле настроек. |
void |
sync() |
Реализует метод sync согласно спецификации в Preferences.sync(). |
protected abstract void |
syncSpi() |
Этот метод вызывается, когда данный узел заблокирован. |
String |
toString() |
Возвращает абсолютный путь к этому узлу настроек. |
Методы, объявленные в классе Preferences
importPreferences, systemNodeForPackage, systemRoot, userNodeForPackage, userRoot
Подробное описание полей
newNode
protected boolean newNode
true, если этого узла не существовало в базовом хранилище до создания данного объекта. Поле инициализируется значением false, но конструктор подкласса может установить для него значение true (после этого его не следует изменять). Это поле указывает, следует ли генерировать событие изменения узла по завершении его создания.lock
protected final Object lock
Подробное описание конструкторов
AbstractPreferences
protected AbstractPreferences(AbstractPreferences parent, String name)
- Параметры:
-
parent— родительский узел этого узла настроек или null, если это корневой узел. -
name— имя этого узла настроек относительно родительского узла или"", если это корневой узел. - Исключения:
-
IllegalArgumentException— еслиnameсодержит косую черту ('/') илиparentравенnull, а имя не равно"".
Подробное описание методов
put
public void put(String key, String value)
put в соответствии со спецификацией в Preferences.put(String,String). Эта реализация проверяет допустимость ключа и значения, получает блокировку этого узла настроек, проверяет, что узел не был удален, вызывает putSpi(String,String) и, если имеются слушатели изменений настроек, ставит в очередь событие уведомления для обработки потоком диспетчеризации событий.
- Определено в:
-
putв классеPreferences - Параметры:
-
key— ключ, с которым связывается указанное значение. -
value— значение, связываемое с указанным ключом. - Исключения:
-
NullPointerException— если ключ или значение равноnull. -
IllegalArgumentException— еслиkey.length()превышаетMAX_KEY_LENGTHилиvalue.lengthпревышаетMAX_VALUE_LENGTH. -
IllegalArgumentException— если ключ или значение содержит нулевой управляющий символ с кодовой точкой U+0000. -
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode().
get
public String get(String key, String def)
get в соответствии со спецификацией в Preferences.get(String,String). Сначала эта реализация проверяет, не равно ли key значению null, и в таком случае генерирует NullPointerException. Затем она получает блокировку этого узла настроек, проверяет, что узел не был удален, вызывает getSpi(String) и возвращает результат, если только вызов getSpi не возвращает null и не генерирует исключение; в таком случае этот вызов возвращает def.
- Определено в:
-
getв классеPreferences - Параметры:
-
key— ключ, значение которого требуется вернуть. -
def— значение, возвращаемое в том случае, если сkeyв этом узле настроек не связано никакое значение. - Возвращает:
- значение, связанное с
key, илиdef, если сkeyне связано никакое значение. - Исключения:
-
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). -
NullPointerException— если ключ равенnull. (Значение по умолчаниюnullдопускается.) -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000.
remove
public void remove(String key)
remove(String) в соответствии со спецификацией в Preferences.remove(String). Эта реализация получает блокировку этого узла настроек, проверяет, что узел не был удален, вызывает removeSpi(String) и, если имеются слушатели изменений настроек, ставит в очередь событие уведомления для обработки потоком диспетчеризации событий.
- Определено в:
-
removeв классеPreferences - Параметры:
-
key— ключ, отображение которого требуется удалить из узла настроек. - Исключения:
-
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. -
NullPointerException— еслиkeyравноnull.
clear
public void clear() throws BackingStoreException
clear в соответствии со спецификацией в Preferences.clear(). Эта реализация получает блокировку этого узла настроек, вызывает keys() для получения массива ключей и перебирает массив, вызывая remove(String) для каждого ключа.
- Определено в:
-
clearв классеPreferences - Исключения:
-
BackingStoreException— если эту операцию невозможно выполнить из-за сбоя базового хранилища или невозможности связи с ним. -
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). - См. также:
putInt
public void putInt(String key, int value)
putInt в соответствии со спецификацией в Preferences.putInt(String,int). Эта реализация преобразует value в строку с помощью Integer.toString(int) и вызывает для результата put(String,String).
- Определено в:
-
putIntв классеPreferences - Параметры:
-
key— ключ, с которым связывается строковое представление значения. -
value— значение, строковое представление которого связывается с ключом. - Исключения:
-
NullPointerException— если ключ равенnull. -
IllegalArgumentException— еслиkey.length()превышаетMAX_KEY_LENGTH. -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. -
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). - См. также:
getInt
public int getInt(String key, int def)
getInt в соответствии со спецификацией в Preferences.getInt(String,int). Эта реализация вызывает get(key,
null). Если возвращаемое значение не равно null, реализация пытается преобразовать его в int с помощью Integer.parseInt(String). Если попытка завершается успешно, этот метод возвращает преобразованное значение. В противном случае возвращается def.
- Определено в:
-
getIntв классеPreferences - Параметры:
-
key— ключ, значение которого требуется вернуть как int. -
def— значение, возвращаемое в том случае, если сkeyв этом узле настроек не связано никакое значение или связанное значение невозможно интерпретировать как int. - Возвращает:
- значение типа int, представленное строкой, связанной с
keyв этом узле настроек, илиdef, если связанное значение отсутствует или его невозможно интерпретировать как int. - Исключения:
-
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). -
NullPointerException— еслиkeyравноnull. -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. - См. также:
putLong
public void putLong(String key, long value)
putLong в соответствии со спецификацией в Preferences.putLong(String,long). Эта реализация преобразует value в строку с помощью Long.toString(long) и вызывает для результата put(String,String).
- Определено в:
-
putLongв классеPreferences - Параметры:
-
key— ключ, с которым связывается строковое представление значения. -
value— значение, строковое представление которого связывается с ключом. - Исключения:
-
NullPointerException— если ключ равенnull. -
IllegalArgumentException— еслиkey.length()превышаетMAX_KEY_LENGTH. -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. -
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). - См. также:
getLong
public long getLong(String key, long def)
getLong в соответствии со спецификацией в Preferences.getLong(String,long). Эта реализация вызывает get(key,
null). Если возвращаемое значение не равно null, реализация пытается преобразовать его в long с помощью Long.parseLong(String). Если попытка завершается успешно, этот метод возвращает преобразованное значение. В противном случае возвращается def.
- Определено в:
-
getLongв классеPreferences - Параметры:
-
key— ключ, значение которого требуется вернуть как long. -
def— значение, возвращаемое в том случае, если сkeyв этом узле настроек не связано никакое значение или связанное значение невозможно интерпретировать как long. - Возвращает:
- значение типа long, представленное строкой, связанной с
keyв этом узле настроек, илиdef, если связанное значение отсутствует или его невозможно интерпретировать как long. - Исключения:
-
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). -
NullPointerException— еслиkeyравноnull. -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. - См. также:
putBoolean
public void putBoolean(String key, boolean value)
putBoolean в соответствии со спецификацией в Preferences.putBoolean(String,boolean). Эта реализация преобразует value в строку с помощью String.valueOf(boolean) и вызывает для результата put(String,String).
- Определено в:
-
putBooleanв классеPreferences - Параметры:
-
key— ключ, с которым связывается строковое представление значения. -
value— значение, строковое представление которого связывается с ключом. - Исключения:
-
NullPointerException— если ключ равенnull. -
IllegalArgumentException— еслиkey.length()превышаетMAX_KEY_LENGTH. -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. -
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). - См. также:
getBoolean
public boolean getBoolean(String key, boolean def)
getBoolean в соответствии со спецификацией в Preferences.getBoolean(String,boolean). Эта реализация вызывает get(key,
null). Если возвращаемое значение не равно null, оно сравнивается с "true" с помощью String.equalsIgnoreCase(String). Если сравнение возвращает true, этот вызов возвращает true. В противном случае исходное возвращаемое значение сравнивается с "false", также с помощью String.equalsIgnoreCase(String). Если сравнение возвращает true, этот вызов возвращает false. В противном случае этот вызов возвращает def.
- Определено в:
-
getBooleanв классеPreferences - Параметры:
-
key— ключ, значение которого требуется вернуть как boolean. -
def— значение, возвращаемое в том случае, если сkeyв этом узле настроек не связано никакое значение или связанное значение невозможно интерпретировать как boolean. - Возвращает:
- значение boolean, представленное строкой, связанной с
keyв этом узле настроек, илиdef, если связанное значение отсутствует или его невозможно интерпретировать как boolean. - Исключения:
-
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). -
NullPointerException— еслиkeyравноnull. -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. - См. также:
putFloat
public void putFloat(String key, float value)
putFloat в соответствии со спецификацией в Preferences.putFloat(String,float). Эта реализация преобразует value в строку с помощью Float.toString(float) и вызывает для результата put(String,String).
- Определено в:
-
putFloatв классеPreferences - Параметры:
-
key— ключ, с которым связывается строковое представление значения. -
value— значение, строковое представление которого связывается с ключом. - Исключения:
-
NullPointerException— если ключ равенnull. -
IllegalArgumentException— еслиkey.length()превышаетMAX_KEY_LENGTH. -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. -
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). - См. также:
getFloat
public float getFloat(String key, float def)
getFloat в соответствии со спецификацией в Preferences.getFloat(String,float). Эта реализация вызывает get(key,
null). Если возвращаемое значение не равно null, реализация пытается преобразовать его в float с помощью Float.parseFloat(String). Если попытка завершается успешно, этот метод возвращает преобразованное значение. В противном случае возвращается def.
- Определено в:
-
getFloatв классеPreferences - Параметры:
-
key— ключ, значение которого требуется вернуть как float. -
def— значение, возвращаемое в том случае, если сkeyв этом узле настроек не связано никакое значение или связанное значение невозможно интерпретировать как float. - Возвращает:
- значение типа float, представленное строкой, связанной с
keyв этом узле настроек, илиdef, если связанное значение отсутствует или его невозможно интерпретировать как float. - Исключения:
-
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). -
NullPointerException— еслиkeyравноnull. -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. - См. также:
putDouble
public void putDouble(String key, double value)
putDouble в соответствии со спецификацией в Preferences.putDouble(String,double). Эта реализация преобразует value в строку с помощью Double.toString(double) и вызывает для результата put(String,String).
- Определено в:
-
putDoubleв классеPreferences - Параметры:
-
key— ключ, с которым связывается строковое представление значения. -
value— значение, строковое представление которого связывается с ключом. - Исключения:
-
NullPointerException— если ключ равенnull. -
IllegalArgumentException— еслиkey.length()превышаетMAX_KEY_LENGTH. -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. -
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). - См. также:
getDouble
public double getDouble(String key, double def)
getDouble в соответствии со спецификацией в Preferences.getDouble(String,double). Эта реализация вызывает get(key,
null). Если возвращаемое значение не равно null, реализация пытается преобразовать его в double с помощью Double.parseDouble(String). Если попытка завершается успешно, этот метод возвращает преобразованное значение. В противном случае возвращается def.
- Определено в:
-
getDoubleв классеPreferences - Параметры:
-
key— ключ, значение которого требуется вернуть как double. -
def— значение, возвращаемое в том случае, если сkeyв этом узле настроек не связано никакое значение или связанное значение невозможно интерпретировать как double. - Возвращает:
- значение типа double, представленное строкой, связанной с
keyв этом узле настроек, илиdef, если связанное значение отсутствует или его невозможно интерпретировать как double. - Исключения:
-
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). -
NullPointerException— еслиkeyравноnull. -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. - См. также:
putByteArray
public void putByteArray(String key, byte[] value)
putByteArray в соответствии со спецификацией в Preferences.putByteArray(String,byte[]).- Определено в:
-
putByteArrayв классеPreferences - Параметры:
-
key— ключ, с которым связывается строковое представление значения. -
value— значение, строковое представление которого связывается с ключом. - Исключения:
-
NullPointerException— если ключ или значение равноnull. -
IllegalArgumentException— если key.length() превышает MAX_KEY_LENGTH или value.length превышает MAX_VALUE_LENGTH*3/4. -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. -
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). - См. также:
getByteArray
public byte[] getByteArray(String key, byte[] def)
getByteArray в соответствии со спецификацией в Preferences.getByteArray(String,byte[]).- Определено в:
-
getByteArrayв классеPreferences - Параметры:
-
key— ключ, значение которого требуется вернуть как массив байтов. -
def— значение, возвращаемое в том случае, если сkeyв этом узле настроек не связано никакое значение или связанное значение невозможно интерпретировать как массив байтов. - Возвращает:
- значение в виде массива байтов, представленное строкой, связанной с
keyв этом узле настроек, илиdef, если связанное значение отсутствует или его невозможно интерпретировать как массив байтов. - Исключения:
-
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode(). -
NullPointerException— еслиkeyравноnull. (Значениеnullдляdefдопускается.) -
IllegalArgumentException— если ключ содержит нулевой управляющий символ с кодовой точкой U+0000. - См. также:
keys
public String[] keys() throws BackingStoreException
keys в соответствии со спецификацией в Preferences.keys(). Эта реализация получает блокировку этого узла настроек, проверяет, что узел не был удален, и вызывает keysSpi().
- Определено в:
-
keysв классеPreferences - Возвращает:
- массив ключей, с которыми в этом узле настроек связано значение.
- Исключения:
-
BackingStoreException— если эту операцию невозможно выполнить из-за сбоя базового хранилища или невозможности связи с ним. -
IllegalStateException— если этот узел (или его предок) был удален с помощью методаremoveNode().
childrenNames
public String[] childrenNames() throws BackingStoreException
children согласно спецификации в Preferences.childrenNames(). Эта реализация получает блокировку данного узла настроек, проверяет, что узел не был удалён, создаёт TreeSet, инициализированное именами уже кэшированных дочерних узлов (дочерними узлами в «кэше дочерних узлов» этого узла), вызывает childrenNamesSpi() и добавляет в множество все возвращённые имена дочерних узлов. Элементы дерева сортировки помещаются в массив String с помощью метода toArray, после чего этот массив возвращается.
- Определено в:
-
childrenNamesв классеPreferences - Возвращает:
- имена дочерних узлов этого узла настроек.
- Исключения:
-
BackingStoreException— если эту операцию невозможно выполнить из-за сбоя в хранилище или невозможности установить с ним связь. -
IllegalStateException— если этот узел (или его предок) был удалён с помощью методаremoveNode(). - См. также:
cachedChildren
protected final AbstractPreferences[] cachedChildren()
- Возвращает:
- все известные дочерние узлы этого узла, которые не были удалены.
parent
public Preferences parent()
parent согласно спецификации в Preferences.parent(). Эта реализация получает блокировку данного узла настроек, проверяет, что узел не был удалён, и возвращает значение родительского узла, переданное конструктору этого узла.
- Определено в:
-
parentв классеPreferences - Возвращает:
- родительский узел этого узла настроек.
- Исключения:
-
IllegalStateException— если этот узел (или его предок) был удалён с помощью методаremoveNode().
node
public Preferences node(String path)
node согласно спецификации в Preferences.node(String). Эта реализация получает блокировку данного узла настроек и проверяет, что узел не был удалён. Если path равно "", возвращается этот узел; если path равно "/", возвращается корневой узел этого узла. Если первый символ в path не является '/', реализация разбивает path на токены и рекурсивно проходит по пути от этого узла до указанного узла, «потребляя» имя и косую черту из path на каждом шаге обхода. На каждом шаге блокируется текущий узел и проверяется кэш его дочерних узлов на наличие указанного узла. Если узел не найден, проверяется, не превышает ли длина имени MAX_NAME_LENGTH. Затем вызывается метод childSpi(String), а результат сохраняется в кэше дочерних узлов этого узла. Если поле newNode вновь созданного объекта Preferences равно true и имеются слушатели изменения узлов, в очередь помещается событие-уведомление для обработки потоком диспетчеризации событий.
Когда токенов больше не остаётся, этот метод возвращает последнее значение, найденное в кэше дочерних узлов или возвращённое методом childSpi. Если во время обхода подряд встречаются два токена "/" или последний токен — "/" (а не имя), выбрасывается соответствующее исключение IllegalArgumentException.
Если первый символ path — '/' (что указывает на абсолютный путь), блокировка этого узла настроек снимается до разбиения path на токены, и этот метод рекурсивно проходит по пути от корневого узла, а не от текущего. В остальном обход выполняется так же, как для относительных путей. Снятие блокировки этого узла до начала обхода от корневого узла необходимо для предотвращения возможной взаимной блокировки, как указано в locking invariant.
- Определено в:
-
nodeв классеPreferences - Параметры:
-
path— путь к возвращаемому узлу настроек. - Возвращает:
- указанный узел настроек.
- Исключения:
-
IllegalArgumentException— если путь недопустим (то есть содержит несколько косых черт подряд или заканчивается косой чертой и имеет длину больше одного символа). -
IllegalStateException— если этот узел (или его предок) был удалён с помощью методаremoveNode(). - См. также:
nodeExists
public boolean nodeExists(String path) throws BackingStoreException
nodeExists согласно спецификации в Preferences.nodeExists(String). Эта реализация очень похожа на node(String), за исключением того, что вместо childSpi(String) используется getChild(String).
- Определено в:
-
nodeExistsв классеPreferences - Параметры:
-
path— путь к узлу, существование которого нужно проверить. - Возвращает:
- true, если указанный узел существует.
- Исключения:
-
BackingStoreException— если эту операцию невозможно выполнить из-за сбоя в хранилище или невозможности установить с ним связь. -
IllegalArgumentException— если путь недопустим (то есть содержит несколько косых черт подряд или заканчивается косой чертой и имеет длину больше одного символа). -
IllegalStateException— если этот узел (или его предок) был удалён с помощью методаremoveNode(), аpathnameне является пустой строкой ("").
removeNode
public void removeNode() throws BackingStoreException
removeNode() согласно спецификации в Preferences.removeNode(). Эта реализация проверяет, является ли данный узел корневым; если да, выбрасывается соответствующее исключение. Затем она блокирует родительский узел и вызывает рекурсивный вспомогательный метод, обходящий поддерево с корнем в данном узле. Рекурсивный метод блокирует узел, для которого он вызван, проверяет, не был ли тот уже удалён, а затем убеждается, что все его дочерние узлы кэшированы: вызывается метод childrenNamesSpi(), и для каждого возвращённого имени дочернего узла проверяется его наличие в кэше дочерних узлов. Если дочерний узел ещё не кэширован, для создания экземпляра Preferences вызывается метод childSpi(String), после чего этот экземпляр помещается в кэш дочерних узлов. Затем вспомогательный метод рекурсивно вызывается для каждого узла в кэше дочерних узлов. Далее вызывается removeNodeSpi(), узел помечается как удалённый и удаляется из кэша дочерних узлов родителя. Наконец, если имеются слушатели изменения узлов, в очередь помещается событие-уведомление для обработки потоком диспетчеризации событий.
Обратите внимание, что вспомогательный метод всегда вызывается, когда заблокированы все предки вплоть до «ближайшего неудалённого предка».
- Определено в:
-
removeNodeв классеPreferences - Исключения:
-
IllegalStateException— если этот узел (или его предок) уже был удалён с помощью методаremoveNode(). -
UnsupportedOperationException— если этот метод вызван для корневого узла. -
BackingStoreException— если эту операцию невозможно выполнить из-за сбоя в хранилище или невозможности установить с ним связь. - См. также:
name
public String name()
name согласно спецификации в Preferences.name(). Эта реализация просто возвращает имя, переданное конструктору данного узла.
- Определено в:
-
nameв классеPreferences - Возвращает:
- имя этого узла настроек относительно его родительского узла.
absolutePath
public String absolutePath()
absolutePath согласно спецификации в Preferences.absolutePath(). Эта реализация просто возвращает абсолютный путь, вычисленный при создании данного узла (на основе имени, переданного конструктору этого узла, и имён, переданных конструкторам его предков).
- Определено в:
-
absolutePathв классеPreferences - Возвращает:
- абсолютный путь этого узла настроек.
isUserNode
public boolean isUserNode()
isUserNode согласно спецификации в Preferences.isUserNode(). Эта реализация сравнивает корневой узел данного узла (хранящийся в закрытом поле) со значением, возвращаемым методом Preferences.userRoot(). Если ссылки на эти два объекта идентичны, метод возвращает true.
- Определено в:
-
isUserNodeв классеPreferences - Возвращает:
-
true, если этот узел настроек находится в дереве пользовательских настроек;false, если он находится в дереве системных настроек.
addPreferenceChangeListener
public void addPreferenceChangeListener(PreferenceChangeListener pcl)
PreferencesPreferences.removeNode(), который генерирует событие изменения узла. События изменения настроек генерируются методом clear.) Гарантируется получение событий только для изменений, выполненных в той же JVM, что и зарегистрированный слушатель, хотя некоторые реализации могут генерировать события и для изменений, выполненных за пределами этой JVM. События могут генерироваться до того, как изменения будут сохранены. События не генерируются при изменении настроек в дочерних узлах этого узла; чтобы получать такие события, вызывающий код должен зарегистрировать слушатель в каждом дочернем узле.
- Определено в:
-
addPreferenceChangeListenerв классеPreferences - Параметры:
-
pcl— слушатель изменений настроек, который нужно добавить. - См. также:
removePreferenceChangeListener
public void removePreferenceChangeListener(PreferenceChangeListener pcl)
Preferences- Определено в:
-
removePreferenceChangeListenerв классеPreferences - Параметры:
-
pcl— слушатель изменений настроек, который нужно удалить. - См. также:
addNodeChangeListener
public void addNodeChangeListener(NodeChangeListener ncl)
PreferencesPreferences.removeNode() приводит к возникновению нескольких событий изменения узлов — по одному для каждого узла в поддереве с корнем в удалённом узле.) Гарантируется получение событий только для изменений, выполненных в той же JVM, что и зарегистрированный слушатель, хотя некоторые реализации могут генерировать события и для изменений, выполненных за пределами этой JVM. События могут генерироваться до того, как изменения станут постоянными. События не генерируются при добавлении или удалении косвенных потомков этого узла; чтобы получать такие события, вызывающий код должен зарегистрировать слушатель в каждом потомке.
Для создания узлов можно дать лишь ограниченные гарантии. Поскольку узлы создаются неявно при обращении к ним, реализация может быть не в состоянии определить, существовал ли дочерний узел в хранилище до обращения к нему (например, если хранилище недоступно или кэшированные сведения устарели). В таких обстоятельствах реализации не обязаны генерировать события изменения узлов, но и не запрещено это делать.
- Определено в:
-
addNodeChangeListenerв классеPreferences - Параметры:
-
ncl— объектNodeChangeListener, который нужно добавить. - См. также:
removeNodeChangeListener
public void removeNodeChangeListener(NodeChangeListener ncl)
PreferencesNodeChangeListener, после чего он перестаёт получать события изменений.- Определено в:
-
removeNodeChangeListenerв классеPreferences - Параметры:
-
ncl— объектNodeChangeListener, который нужно удалить. - См. также:
putSpi
protected abstract void putSpi(String key, String value)
key и value не равны null и имеют допустимую длину. Также гарантируется, что этот узел не был удалён. (Реализатору не нужно проверять ни одно из этих условий.) Этот метод вызывается, когда блокировка данного узла удерживается.
- Параметры:
-
key— ключ -
value— значение
getSpi
protected abstract String getSpi(String key)
null, если с этим ключом ничего не связано либо связь в данный момент невозможно определить. Гарантируется, что key не равно null. Также гарантируется, что этот узел не был удалён. (Реализатору не нужно проверять ни одно из этих условий.) Как правило, этот метод не должен выбрасывать исключения ни при каких обстоятельствах. Однако если исключение всё же выбрасывается, оно перехватывается и рассматривается как возвращаемое значение null.
Этот метод вызывается, когда блокировка данного узла удерживается.
- Параметры:
-
key— ключ - Возвращает:
- значение, связанное с указанным ключом в этом узле настроек, или
null, если с этим ключом ничего не связано либо связь в данный момент невозможно определить.
removeSpi
protected abstract void removeSpi(String key)
key не равно null. Также гарантируется, что этот узел не был удалён. (Реализатору не нужно проверять ни одно из этих условий.) Этот метод вызывается, когда блокировка данного узла удерживается.
- Параметры:
-
key— ключ
removeNodeSpi
protected abstract void removeNodeSpi() throws BackingStoreException
Preferences.removeNode() вызывает этот метод повторно снизу вверх, удаляя всех потомков узла до удаления самого узла). Этот метод вызывается, когда удерживаются блокировки данного узла и его родительского узла (а также всех предков, удаляемых в результате одного вызова Preferences.removeNode()).
Удаление узла не обязательно должно стать постоянным до вызова метода flush для этого узла или одного из его предков.
Если этот узел выбрасывает BackingStoreException, исключение распространяется за пределы окружающего вызова removeNode().
- Исключения:
-
BackingStoreException— если эту операцию невозможно выполнить из-за сбоя в хранилище или невозможности установить с ним связь.
keysSpi
protected abstract String[] keysSpi() throws BackingStoreException
Этот метод вызывается, когда блокировка данного узла удерживается.
Если этот узел выбрасывает BackingStoreException, исключение распространяется за пределы окружающего вызова keys().
- Возвращает:
- массив ключей, с которыми в этом узле настроек связано значение.
- Исключения:
-
BackingStoreException— если эту операцию невозможно выполнить из-за сбоя в хранилище или невозможности установить с ним связь.
childrenNamesSpi
protected abstract String[] childrenNamesSpi() throws BackingStoreException
Этот метод вызывается, когда блокировка данного узла удерживается.
Если этот узел выбрасывает BackingStoreException, исключение распространяется за пределы окружающего вызова childrenNames().
- Возвращает:
- массив, содержащий имена дочерних узлов этого узла настроек.
- Исключения:
-
BackingStoreException— если эту операцию невозможно выполнить из-за сбоя в хранилище или невозможности установить с ним связь.
getChild
protected AbstractPreferences getChild(String nodeName) throws BackingStoreException
null, если он не существует. Гарантируется, что nodeName не равно null, не является пустым, не содержит символ косой черты ('/') и имеет длину не более Preferences.MAX_NAME_LENGTH символов. Также гарантируется, что этот узел не был удалён. (Если реализатор решит переопределить этот метод, ему не нужно проверять ни одно из этих условий.) Наконец, гарантируется, что указанный узел не возвращался предыдущим вызовом этого метода или childSpi(String) после последнего удаления этого узла. Иными словами, кэшированное значение всегда будет использоваться вместо вызова этого метода. (Если реализатор решит переопределить этот метод, ему не нужно поддерживать собственный кэш ранее возвращённых дочерних узлов.)
Эта реализация получает блокировку данного узла настроек, вызывает childrenNames(), чтобы получить массив имён дочерних узлов, и перебирает этот массив, сравнивая имя каждого дочернего узла с указанным именем узла. Если имя дочернего узла совпадает, вызывается метод childSpi(String) и возвращается полученный узел. Если перебор завершается, а указанное имя не найдено, возвращается null.
- Параметры:
-
nodeName— имя искомого дочернего узла. - Возвращает:
- именованный дочерний узел, если он существует, или null, если он не существует.
- Исключения:
-
BackingStoreException— если эту операцию невозможно выполнить из-за сбоя в хранилище или невозможности установить с ним связь.
childSpi
protected abstract AbstractPreferences childSpi(String name)
name не равно null, не является пустым, не содержит символ косой черты ('/') и имеет длину не более Preferences.MAX_NAME_LENGTH символов. Также гарантируется, что этот узел не был удалён. (Реализатору не нужно проверять ни одно из этих условий.) Наконец, гарантируется, что указанный узел не возвращался предыдущим вызовом этого метода или getChild(String) после последнего удаления этого узла. Иными словами, кэшированное значение всегда будет использоваться вместо вызова этого метода. Подклассам не нужно поддерживать собственный кэш ранее возвращённых дочерних узлов.
Реализатор должен гарантировать, что возвращаемый узел не был удалён. Если одноимённый дочерний узел этого узла был ранее удалён, реализатор должен вернуть вновь созданный узел AbstractPreferences; после удаления узел AbstractPreferences нельзя «оживить».
Если в результате вызова этого метода создаётся узел, его сохранение не гарантируется до вызова метода flush для этого узла или одного из его предков либо потомков.
Этот метод вызывается, когда блокировка данного узла удерживается.
- Параметры:
-
name— имя возвращаемого дочернего узла относительно этого узла настроек. - Возвращает:
- именованный дочерний узел.
toString
public String toString()
- Определено в:
-
toStringв классеPreferences - Возвращает:
- строковое представление объекта
sync
public void sync() throws BackingStoreException
sync согласно спецификации в Preferences.sync(). Эта реализация вызывает рекурсивный вспомогательный метод, который блокирует этот узел, вызывает для него syncSpi(), снимает блокировку этого узла и рекурсивно вызывает этот метод для каждого «кэшированного дочернего узла». Кэшированный дочерний узел — это дочерний узел, созданный в данной виртуальной машине и не удалённый впоследствии. По сути, этот метод выполняет обход в глубину «кэшированного поддерева» с корнем в данном узле, вызывая syncSpi() для каждого узла поддерева и блокируя только текущий узел. Обратите внимание, что syncSpi() вызывается сверху вниз.
- Определено в:
-
syncв классеPreferences - Исключения:
-
BackingStoreException— если эту операцию невозможно выполнить из-за сбоя в хранилище или невозможности установить с ним связь. -
IllegalStateException— если этот узел (или его предок) был удалён с помощью методаremoveNode(). - См. также:
syncSpi
protected abstract void syncSpi() throws BackingStoreException
Если этот узел выбрасывает BackingStoreException, исключение распространяется за пределы окружающего вызова sync().
- Исключения:
-
BackingStoreException— если эту операцию невозможно выполнить из-за сбоя в хранилище или невозможности установить с ним связь.
flush
public void flush() throws BackingStoreException
flush согласно спецификации в Preferences.flush(). Эта реализация вызывает рекурсивный вспомогательный метод, который блокирует этот узел, вызывает для него flushSpi(), снимает блокировку этого узла и рекурсивно вызывает этот метод для каждого «кэшированного дочернего узла». Кэшированный дочерний узел — это дочерний узел, созданный в данной виртуальной машине и не удалённый впоследствии. По сути, этот метод выполняет обход в глубину «кэшированного поддерева» с корнем в данном узле, вызывая flushSpi() для каждого узла поддерева и блокируя только текущий узел. Обратите внимание, что flushSpi() вызывается сверху вниз.
Если этот метод вызван для узла, удалённого с помощью метода removeNode(), flushSpi() вызывается для этого узла, но не для остальных.
- Определено в:
-
flushв классеPreferences - Исключения:
-
BackingStoreException— если эту операцию невозможно выполнить из-за сбоя в хранилище или невозможности установить с ним связь. - См. также:
flushSpi
protected abstract void flushSpi() throws BackingStoreException
Если этот узел выбрасывает BackingStoreException, исключение выйдет за пределы заключающего вызова flush().
- Выбрасывает:
-
BackingStoreException— если эту операцию невозможно завершить из-за сбоя базового хранилища или невозможности связаться с ним.
isRemoved
protected boolean isRemoved()
true тогда и только тогда, когда этот узел (или его предок) был удалён методом removeNode(). Перед возвратом содержимого закрытого поля, используемого для отслеживания этого состояния, этот метод блокирует данный узел.- Возвращает:
-
trueтогда и только тогда, когда этот узел (или его предок) был удалён методомremoveNode().
exportNode
public void exportNode(OutputStream os) throws IOException, BackingStoreException
exportNode в соответствии со спецификацией в Preferences.exportNode(OutputStream).- Определено в:
-
exportNodeв классеPreferences - Параметры:
-
os— поток вывода, в который записывается документ XML. - Выбрасывает:
-
IOException— если запись в указанный поток вывода приводит кIOException. -
BackingStoreException— если данные настроек не удаётся прочитать из базового хранилища. - См. также:
exportSubtree
public void exportSubtree(OutputStream os) throws IOException, BackingStoreException
exportSubtree в соответствии со спецификацией в Preferences.exportSubtree(OutputStream).- Определено в:
-
exportSubtreeв классеPreferences - Параметры:
-
os— поток вывода, в который записывается документ XML. - Выбрасывает:
-
IOException— если запись в указанный поток вывода приводит кIOException. -
BackingStoreException— если данные настроек не удаётся прочитать из базового хранилища. - См. также:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.prefs/java/util/prefs/AbstractPreferences.html