Класс 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 | Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
MAX_KEY_LENGTH |
Максимальная длина строки, допустимой в качестве ключа (80 символов). |
static final int |
MAX_NAME_LENGTH |
Максимальная длина имени узла (80 символов). |
static final int |
MAX_VALUE_LENGTH |
Максимальная длина строки, допустимой в качестве значения (8192 символа). |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
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 | Модификатор и тип | Метод | Описание |
|---|---|---|
static void |
importPreferences |
Импортирует все настройки, представленные в документе XML в указанном входном потоке. |
static Preferences |
systemNodeForPackage |
Возвращает узел настроек из системного дерева настроек, связанный (по соглашению) с пакетом указанного класса. |
static Preferences |
systemRoot() |
Возвращает корневой узел системных настроек. |
static Preferences |
userNodeForPackage |
Возвращает узел настроек из дерева настроек вызывающего пользователя, связанный (по соглашению) с пакетом указанного класса. |
static Preferences |
userRoot() |
Возвращает корневой узел настроек вызывающего пользователя. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
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, а name не равно"".
Подробное описание методов
put
public void put(String key, String value)
put в соответствии со спецификацией, приведенной в Preferences.put(String,String). Эта реализация проверяет допустимость ключа и значения, получает блокировку этого узла настроек, проверяет, что узел не был удален, вызывает putSpi(String,String) и, если имеются слушатели изменений настроек, помещает событие уведомления в очередь для обработки потоком диспетчеризации событий.
- Определено в:
-
putв классеPreferences - Параметры:
-
key— ключ, с которым связывается указанное значение. -
value— значение, связываемое с указанным ключом. - Исключения:
-
NullPointerException— если key или value равноnull. -
IllegalArgumentException— еслиkey.length()превышаетMAX_KEY_LENGTHилиvalue.lengthпревышаетMAX_VALUE_LENGTH. -
IllegalArgumentException— если key или value содержит нулевой управляющий символ с кодовой точкой 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— если key равноnull. (Значение по умолчаниюnullдопускается.) -
IllegalArgumentException— если key содержит нулевой управляющий символ с кодовой точкой U+0000.
remove
public void remove(String key)
remove(String) в соответствии со спецификацией, приведенной в Preferences.remove(String). Эта реализация получает блокировку этого узла настроек, проверяет, что узел не был удален, вызывает removeSpi(String) и, если имеются слушатели изменений настроек, помещает событие уведомления в очередь для обработки потоком диспетчеризации событий.
- Определено в:
-
removeв классеPreferences - Параметры:
-
key— ключ, сопоставление которого требуется удалить из узла настроек. - Исключения:
-
IllegalStateException— если этот узел (или его предок) был удален методомremoveNode(). -
IllegalArgumentException— если key содержит нулевой управляющий символ с кодовой точкой 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— если key равноnull. -
IllegalArgumentException— еслиkey.length()превышаетMAX_KEY_LENGTH. -
IllegalArgumentException— если key содержит нулевой управляющий символ с кодовой точкой 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— если key содержит нулевой управляющий символ с кодовой точкой 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— если key равноnull. -
IllegalArgumentException— еслиkey.length()превышаетMAX_KEY_LENGTH. -
IllegalArgumentException— если key содержит нулевой управляющий символ с кодовой точкой 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— если key содержит нулевой управляющий символ с кодовой точкой 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— если key равноnull. -
IllegalArgumentException— еслиkey.length()превышаетMAX_KEY_LENGTH. -
IllegalArgumentException— если key содержит нулевой управляющий символ с кодовой точкой 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— если key содержит нулевой управляющий символ с кодовой точкой 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— если key равноnull. -
IllegalArgumentException— еслиkey.length()превышаетMAX_KEY_LENGTH. -
IllegalArgumentException— если key содержит нулевой управляющий символ с кодовой точкой 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— если key содержит нулевой управляющий символ с кодовой точкой 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— если key равноnull. -
IllegalArgumentException— еслиkey.length()превышаетMAX_KEY_LENGTH. -
IllegalArgumentException— если key содержит нулевой управляющий символ с кодовой точкой 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— если key содержит нулевой управляющий символ с кодовой точкой U+0000. - См. также:
putByteArray
public void putByteArray(String key, byte[] value)
putByteArray в соответствии со спецификацией, приведенной в Preferences.putByteArray(String,byte[]).- Определено в:
-
putByteArrayв классеPreferences - Параметры:
-
key— ключ, с которым связывается строковое представление значения. -
value— значение, строковое представление которого связывается с ключом. - Исключения:
-
NullPointerException— если key или value равноnull. -
IllegalArgumentException— если длина key превышает MAX_KEY_LENGTH или длина value превышает MAX_VALUE_LENGTH*3/4. -
IllegalArgumentException— если key содержит нулевой управляющий символ с кодовой точкой 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— если key содержит нулевой управляющий символ с кодовой точкой 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(), и для каждого возвращённого имени потомка проверяется, содержится ли оно в кэше потомков. Если потомок ещё не кэширован, вызывается метод childSpi(String), чтобы создать для него экземпляр Preferences, после чего этот экземпляр помещается в кэш потомков. Затем вспомогательный метод рекурсивно вызывает себя для каждого узла в кэше потомков. Далее он вызывает 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.