Spec-Zone.ru › OpenJDK 17

Класс AbstractPreferences

java.lang.Object
java.util.prefs.Preferences
java.util.prefs.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 требуют, чтобы реализация читала или записывала информацию в узел настроек. Реализатор должен учитывать тот факт, что другая виртуальная машина может одновременно удалить этот узел из хранилища данных. Реализация должна воссоздать узел, если он был удален.

Примечание для реализации: в реализациях по умолчанию Sun Preferences идентификатор пользователя наследуется от операционной системы и не изменяется на протяжении всего времени жизни виртуальной машины. Признается, что реализация Preferences на стороне сервера может изменить идентификатор пользователя от запроса к запросу, неявно передаваемый методам Preferences с помощью статического экземпляра ThreadLocal. Авторы таких реализаций настоятельно рекомендуются определять пользователя в момент доступа к настройкам (например, методом get(String,String) или put(String,String)), а не постоянно связывать пользователя с каждым экземпляром Preferences. Последнее поведение противоречит стандартному использованию Preferences и приведет к большой путанице.

Since:
1.4
See Also:
  • Preferences

Краткое описание полей

Modifier and Type Field Description
protected final Object lock
Объект, монитор которого используется для блокировки этого узла.
protected boolean newNode
Это поле должно быть true, если этот узел не существовал в хранилище данных до создания этого объекта.

Поля, объявленные в классе java.util.prefs.Preferences

MAX_KEY_LENGTH, MAX_NAME_LENGTH, MAX_VALUE_LENGTH

Краткое описание конструкторов

AbstractPreferences(AbstractPreferences parent, String name)
Modifier Конструктор Описание
protected
Создаёт узел настроек с указанным родителем и указанным именем, относительно родителя.

Краткое описание методов

Модификатор и тип Метод Описание
String absolutePath()
Реализует метод absolutePath в соответствии со спецификацией в Preferences.absolutePath().
void addNodeChangeListener(NodeChangeListener ncl)
Регистрирует указанный слушатель для получения событий изменения узла для этого узла.
void addPreferenceChangeListener(PreferenceChangeListener pcl)
Регистрирует указанный слушатель для получения событий изменения параметров для этого узла параметров.
protected final AbstractPreferences[] cachedChildren()
Возвращает все известные не удалённые дочерние элементы этого узла.
String[] childrenNames()
Реализует метод children в соответствии со спецификацией в Preferences.childrenNames().
protected abstract String[] childrenNamesSpi()
Возвращает имена дочерних элементов этого узла параметров.
protected abstract AbstractPreferences childSpi(String name)
Возвращает именованного дочернего элемента этого узла параметров, создавая его, если он ещё не существует.
void clear()
Реализует метод clear в соответствии со спецификацией в Preferences.clear().
void exportNode(OutputStream os)
Реализует метод exportNode в соответствии со спецификацией в Preferences.exportNode(OutputStream).
void exportSubtree(OutputStream os)
Реализует метод exportSubtree в соответствии со спецификацией в Preferences.exportSubtree(OutputStream).
void flush()
Реализует метод flush в соответствии со спецификацией в Preferences.flush().
protected abstract void flushSpi()
Этот метод вызывается с заблокированным узлом.
String get(String key, String def)
Реализует метод get в соответствии со спецификацией в Preferences.get(String,String).
boolean getBoolean(String key, boolean def)
Реализует метод getBoolean в соответствии со спецификацией в Preferences.getBoolean(String,boolean).
byte[] getByteArray(String key, byte[] def)
Реализует метод getByteArray в соответствии со спецификацией в Preferences.getByteArray(String,byte[]).
protected AbstractPreferences getChild(String nodeName)
Возвращает именованного дочернего элемента, если он существует, или null, если нет.
double getDouble(String key, double def)
Реализует метод getDouble в соответствии со спецификацией в Preferences.getDouble(String,double).
float getFloat(String key, float def)
Реализует метод getFloat в соответствии со спецификацией в Preferences.getFloat(String,float).
int getInt(String key, int def)
Реализует метод getInt в соответствии со спецификацией в Preferences.getInt(String,int).
long getLong(String key, long def)
Реализует метод getLong в соответствии со спецификацией в Preferences.getLong(String,long).
protected abstract String getSpi(String key)
Возвращает значение, связанное с указанным ключом в этом узле параметров, или 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(String path)
Реализует метод node в соответствии со спецификацией в Preferences.node(String).
boolean nodeExists(String path)
Реализует метод nodeExists в соответствии со спецификацией в Preferences.nodeExists(String).
Preferences parent()
Реализует метод parent в соответствии со спецификацией в Preferences.parent().
void put(String key, String value)
Реализует метод put в соответствии со спецификацией в Preferences.put(String,String).
void putBoolean(String key, boolean value)
Реализует метод putBoolean в соответствии со спецификацией в Preferences.putBoolean(String,boolean).
void putByteArray(String key, byte[] value)
Реализует метод putByteArray в соответствии со спецификацией в Preferences.putByteArray(String,byte[]).
void putDouble(String key, double value)
Реализует метод putDouble в соответствии со спецификацией в Preferences.putDouble(String,double).
void putFloat(String key, float value)
Реализует метод putFloat в соответствии со спецификацией в Preferences.putFloat(String,float).
void putInt(String key, int value)
Реализует метод putInt в соответствии со спецификацией в Preferences.putInt(String,int).
void putLong(String key, long value)
Реализует метод putLong в соответствии со спецификацией в Preferences.putLong(String,long).
protected abstract void putSpi(String key, String value)
Добавляет пару ключ-значение в этот узел параметров.
void remove(String key)
Реализует метод remove(String) в соответствии со спецификацией в Preferences.remove(String).
void removeNode()
Реализует метод removeNode() в соответствии со спецификацией в Preferences.removeNode().
void removeNodeChangeListener(NodeChangeListener ncl)
Удаляет указанный NodeChangeListener, поэтому он больше не будет получать события изменений.
protected abstract void removeNodeSpi()
Удаляет этот узел параметров, делая его и все содержащиеся в нём параметры недействительными.
void removePreferenceChangeListener(PreferenceChangeListener pcl)
Удаляет указанный слушатель изменений параметров, поэтому он больше не будет получать события изменений параметров.
protected abstract void removeSpi(String key)
Удаляет связь (если есть) для указанного ключа в этом узле параметров.
void sync()
Реализует метод sync в соответствии со спецификацией в Preferences.sync().
protected abstract void syncSpi()
Этот метод вызывается с заблокированным узлом.
String toString()
Возвращает полное имя пути этого узла параметров.

Методы, объявленные в классе java.util.prefs.Preferences

importPreferences, systemNodeForPackage, systemRoot, userNodeForPackage, userRoot

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, 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, а имя не является "".

Подробное описание методов

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().
См. также:
  • Preferences.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().
См. также:
  • Preferences.getInt(String,int)

getInt

public int getInt(String key, int def)
Реализует метод getInt в соответствии со спецификацией в Preferences.getInt(String,int).

Эта реализация вызывает get(key, null). Если возвращаемое значение не null, реализация пытается преобразовать его в целочисленное значение с помощью Integer.parseInt(String). Если попытка успешна, возвращаемое значение возвращается этим методом. В противном случае возвращается def.

Определено в:
getInt в классе Preferences
Параметры:
key - ключ, связанное значение которого должно быть возвращено как целое число.
def - значение, которое должно быть возвращено в случае, если у этого узла предпочтений нет значения, связанного с key, или связанное значение не может быть интерпретировано как целое число.
Возвращает:
целочисленное значение, представленное строкой, связанной с key в этом узле предпочтений, или def, если связанное значение не существует или не может быть интерпретировано как целое число.
Исключения:
IllegalStateException - если этот узел (или предковый) был удален методом removeNode().
NullPointerException - если key является null.
IllegalArgumentException - если ключ содержит нулевой управляющий символ, код U+0000.
См. также:
  • Preferences.putInt(String,int)
  • Preferences.get(String,String)

putLong

public void putLong(String key, long value)
Реализует метод putLong в соответствии со спецификацией в Preferences.putLong(String,long).

Эта реализация преобразует value в строку с помощью Long.toString(long) и вызывает put(String,String) на результате.

Specified by:
putLong в классе Preferences
Parameters:
key - ключ, с которым будет ассоциирована строковая форма значения.
value - значение, чья строковая форма будет ассоциирована с ключом.
Throws:
NullPointerException - если ключ null.
IllegalArgumentException - если key.length() превышает MAX_KEY_LENGTH.
IllegalArgumentException - если ключ содержит нулевой управляющий символ, код U+0000.
IllegalStateException - если этот узел (или предшествующий) был удалён методом removeNode().
See Also:
  • Preferences.getLong(String,long)

getLong

public long getLong(String key, long def)
Реализует метод getLong в соответствии со спецификацией в Preferences.getLong(String,long).

Эта реализация вызывает get(key, null). Если возвращаемое значение не null, реализация пытается преобразовать его в long с помощью Long.parseLong(String). Если попытка удаётся, возвращаемое значение возвращается этим методом. В противном случае возвращается def.

Specified by:
getLong в классе Preferences
Parameters:
key - ключ, чьё ассоциированное значение должно быть возвращено как long.
def - значение, которое будет возвращено в случае, если этому узлу предпочтений не ассоциировано значение с key или ассоциированное значение не может быть интерпретировано как long.
Returns:
значение long, представленное строкой, связанной с key в этом узле предпочтений, или def, если ассоциированное значение не существует или не может быть интерпретировано как long.
Throws:
IllegalStateException - если этот узел (или предшествующий) был удалён методом removeNode().
NullPointerException - если key имеет значение null.
IllegalArgumentException - если ключ содержит нулевой управляющий символ, код U+0000.
See Also:
  • Preferences.putLong(String,long)
  • Preferences.get(String,String)

putBoolean

public void putBoolean(String key, boolean value)
Реализует метод putBoolean в соответствии со спецификацией в Preferences.putBoolean(String,boolean).

Эта реализация преобразует value в строку с помощью String.valueOf(boolean) и вызывает put(String,String) на результате.

Specified by:
putBoolean в классе Preferences
Parameters:
key - ключ, с которым будет ассоциирована строковая форма значения.
value - значение, чья строковая форма будет ассоциирована с ключом.
Throws:
NullPointerException - если ключ null.
IllegalArgumentException - если key.length() превышает MAX_KEY_LENGTH.
IllegalArgumentException - если ключ содержит нулевой управляющий символ, код U+0000.
IllegalStateException - если этот узел (или предшествующий) был удалён методом removeNode().
See Also:
  • Preferences.getBoolean(String,boolean)
  • Preferences.get(String,String)

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.

Specified by:
getBoolean в классе Preferences
Parameters:
key - ключ, чьё ассоциированное значение должно быть возвращено как boolean.
def - значение, которое будет возвращено в случае, если этому узлу предпочтений не ассоциировано значение с key или ассоциированное значение не может быть интерпретировано как boolean.
Returns:
значение boolean, представленное строкой, связанной с key в этом узле предпочтений, или def, если ассоциированное значение не существует или не может быть интерпретировано как boolean.
Throws:
IllegalStateException - если этот узел (или предшествующий) был удалён методом removeNode().
NullPointerException - если key имеет значение null.
IllegalArgumentException - если ключ содержит нулевой управляющий символ, код U+0000.
See Also:
  • Preferences.get(String,String)
  • Preferences.putBoolean(String,boolean)

putFloat

public void putFloat(String key, float value)
Реализует метод putFloat в соответствии со спецификацией в Preferences.putFloat(String,float).

Эта реализация преобразует value в строку с помощью Float.toString(float) и вызывает put(String,String) на результате.

Specified by:
putFloat в классе Preferences
Parameters:
key - ключ, с которым будет ассоциирована строковая форма значения.
value - значение, чья строковая форма будет ассоциирована с ключом.
Throws:
NullPointerException - если ключ null.
IllegalArgumentException - если key.length() превышает MAX_KEY_LENGTH.
IllegalArgumentException - если ключ содержит нулевой управляющий символ, код U+0000.
IllegalStateException - если этот узел (или предшествующий) был удалён методом removeNode().
See Also:
  • Preferences.getFloat(String,float)

getFloat

public float getFloat(String key, float def)
Реализует метод getFloat в соответствии со спецификацией в Preferences.getFloat(String,float).

Эта реализация вызывает get(key, null). Если возвращаемое значение не null, реализация пытается преобразовать его в float с помощью Float.parseFloat(String). Если попытка удаётся, возвращаемое значение возвращается этим методом. В противном случае возвращается def.

Specified by:
getFloat в классе Preferences
Parameters:
key - ключ, чьё ассоциированное значение должно быть возвращено как float.
def - значение, которое будет возвращено в случае, если этому узлу предпочтений не ассоциировано значение с key или ассоциированное значение не может быть интерпретировано как float.
Returns:
значение float, представленное строкой, связанной с key в этом узле предпочтений, или def, если ассоциированное значение не существует или не может быть интерпретировано как float.
Throws:
IllegalStateException - если этот узел (или предшествующий) был удалён методом removeNode().
NullPointerException - если key имеет значение null.
IllegalArgumentException - если ключ содержит нулевой управляющий символ, код U+0000.
See Also:
  • Preferences.putFloat(String,float)
  • Preferences.get(String,String)

putDouble

public void putDouble(String key, double value)
Реализует метод putDouble в соответствии со спецификацией в Preferences.putDouble(String,double).

Эта реализация преобразует value в строку с помощью Double.toString(double) и вызывает put(String,String) на результате.

Specified by:
putDouble в классе Preferences
Параметры:
key - ключ, с которым будет связана строковая форма значения.
value - значение, строковая форма которого будет связана с ключом.
Исключения:
NullPointerException - если ключ null.
IllegalArgumentException - если key.length() превышает MAX_KEY_LENGTH.
IllegalArgumentException - если ключ содержит нулевой управляющий символ, код U+0000.
IllegalStateException - если этот узел (или предшественник) был удален методом removeNode().
См. также:
  • Preferences.getDouble(String,double)

getDouble

public double getDouble(String key, double def)
Реализует метод getDouble в соответствии со спецификацией в Preferences.getDouble(String,double).

Эта реализация вызывает get(key, null). Если возвращаемое значение не null, реализация пытается преобразовать его в double с помощью Double.parseDouble(String). Если попытка успешна, возвращаемое значение возвращается этим методом. В противном случае возвращается def.

Specified by:
getDouble в классе Preferences
Параметры:
key - ключ, связанное значение которого должно быть возвращено как double.
def - значение, которое должно быть возвращено в случае, если этому узлу настроек нет значения, связанного с key, или связанное значение не может быть интерпретировано как double.
Возвращает:
значение double, представленное строкой, связанной с key в этом узле настроек, или def, если связанное значение не существует или не может быть интерпретировано как double.
Исключения:
IllegalStateException - если этот узел (или предшественник) был удален методом removeNode().
NullPointerException - если key является null.
IllegalArgumentException - если ключ содержит нулевой управляющий символ, код U+0000.
См. также:
  • Preferences.putDouble(String,double)
  • Preferences.get(String,String)

putByteArray

public void putByteArray(String key, byte[] value)
Реализует метод putByteArray в соответствии со спецификацией в Preferences.putByteArray(String,byte[]).
Specified by:
putByteArray в классе Preferences
Параметры:
key - ключ, с которым будет связана строковая форма значения.
value - значение, строковая форма которого будет связана с ключом.
Исключения:
NullPointerException - если ключ или значение null.
IllegalArgumentException - если длина ключа превышает MAX_KEY_LENGTH или если длина значения превышает MAX_VALUE_LENGTH*3/4.
IllegalArgumentException - если ключ содержит нулевой управляющий символ, код U+0000.
IllegalStateException - если этот узел (или предшественник) был удален методом removeNode().
См. также:
  • Preferences.getByteArray(String,byte[])
  • Preferences.get(String,String)

getByteArray

public byte[] getByteArray(String key, byte[] def)
Реализует метод getByteArray в соответствии со спецификацией в Preferences.getByteArray(String,byte[]).
Specified by:
getByteArray в классе Preferences
Параметры:
key - ключ, связанное значение которого должно быть возвращено как массив байтов.
def - значение, которое должно быть возвращено в случае, если этому узлу настроек нет значения, связанного с key, или связанное значение не может быть интерпретировано как массив байтов.
Возвращает:
массив байтов, представленный строкой, связанной с key в этом узле настроек, или def, если связанное значение не существует или не может быть интерпретировано как массив байтов.
Исключения:
IllegalStateException - если этот узел (или предшественник) был удален методом removeNode().
NullPointerException - если key является null. (Значение типа null для def допускается.)
IllegalArgumentException - если ключ содержит нулевой управляющий символ, код U+0000.
См. также:
  • Preferences.get(String,String)
  • Preferences.putByteArray(String,byte[])

keys

public String[] keys() throws BackingStoreException
Реализует метод keys в соответствии со спецификацией в Preferences.keys().

Эта реализация получает блокировку этого узла настроек, проверяет, что узел не был удалён, и вызывает keysSpi().

Specified by:
keys в классе Preferences
Возвращает:
массив ключей, у которых есть связанное значение в этом узле настроек.
Исключения:
BackingStoreException - если это действие не может быть выполнено из-за сбоя в базовом хранилище или невозможности с ним связаться.
IllegalStateException - если этот узел (или предшественник) был удалён методом removeNode().

childrenNames

public String[] childrenNames() throws BackingStoreException
Реализует метод children в соответствии со спецификацией в Preferences.childrenNames().

Эта реализация получает блокировку этого узла настроек, проверяет, что узел не был удалён, создаёт TreeSet, инициализированное именами уже кэшированных дочерних элементов (дочерних элементов в "кэше дочерних элементов" этого узла), вызывает childrenNamesSpi() и добавляет все возвращённые имена дочерних элементов в набор. Элементы набора TreeSet выгружаются в массив String с помощью метода toArray, и этот массив возвращается.

Specified by:
childrenNames в классе Preferences
Возвращает:
имена дочерних элементов этого узла настроек.
Исключения:
BackingStoreException - если это действие не может быть выполнено из-за сбоя в базовом хранилище или невозможности с ним связаться.
IllegalStateException - если этот узел (или предшественник) был удалён методом removeNode().
См. также:
  • cachedChildren()

cachedChildren

protected final AbstractPreferences[] cachedChildren()
Возвращает все известные не удалённые дочерние элементы этого узла.
Возвращает:
все известные не удалённые дочерние элементы этого узла.

parent

public Preferences parent()
Реализует метод parent в соответствии со спецификацией в Preferences.parent().

Эта реализация получает блокировку этого узла настроек, проверяет, что узел не был удалён, и возвращает родительское значение, переданное конструктору этого узла.

Specified by:
parent в классе Preferences
Возвращает:
родитель этого узла настроек.
Исключения:
IllegalStateException - если этот узел (или предшественник) был удалён методом removeNode().

узел

public Preferences node(String path)
Реализует метод node в соответствии со спецификацией в Preferences.node(String).

Эта реализация получает блокировку узла предпочтений и проверяет, не был ли узел удален. Если path равен "", этот узел возвращается; если path равен "/", возвращается корень этого узла. Если первый символ в path не равен '/', реализация разбивает path на токены и рекурсивно обходит путь от этого узла до узла с заданным именем, "потребляя" имя и слеш из path на каждом шаге обхода. На каждом шаге текущий узел блокируется, и кэш дочерних узлов проверяется на наличие узла с заданным именем. Если он не найден, проверяется, чтобы длина имени не превышала MAX_NAME_LENGTH. Затем вызывается метод childSpi(String), и результат сохраняется в кэше дочерних узлов этого узла. Если у созданного объекта Preferences поле newNode равно true и существуют слушатели изменений узла, событие уведомления добавляется в очередь для обработки в потоке диспетчеризации событий.

Когда больше нет токенов, последнее значение, найденное в кэше дочерних узлов или возвращенное методом childSpi, возвращается этим методом. Если во время обхода два токена "/" встречаются последовательно или последний токен является "/" (а не именем), выбрасывается соответствующее IllegalArgumentException исключение.

Если первый символ path равен '/' (что указывает на абсолютное имя пути), блокировка узла предпочтений снимается перед разбиением path на токены, и этот метод рекурсивно обходит путь, начиная с корня (а не с этого узла). Обход в остальном идентичен описанному для имен относительных путей. Снятие блокировки с этого узла перед началом обхода в корневом узле имеет важное значение для предотвращения возможной тупиковой ситуации, согласно locking invariant.

Specified by:
node в классе Preferences
Параметры:
path - имя пути узла предпочтения для возврата.
Возвращает:
указанный узел предпочтений.
Исключения:
IllegalArgumentException - если имя пути недействительно (т. е. содержит несколько последовательных символов слеша или заканчивается символом слеша и имеет длину более одного символа).
IllegalStateException - если этот узел (или предок) был удален методом removeNode().
См. также:
  • Preferences.flush()

существуетУзел

public boolean nodeExists(String path) throws BackingStoreException
Реализует метод nodeExists в соответствии со спецификацией в Preferences.nodeExists(String).

Эта реализация очень похожа на node(String), за исключением того, что используется getChild(String) вместо childSpi(String).

Specified by:
nodeExists в классе Preferences
Параметры:
path - имя пути узла, существование которого нужно проверить.
Возвращает:
true, если указанный узел существует.
Исключения:
BackingStoreException - если эта операция не может быть завершена из-за сбоя в базовом хранилище или невозможности с ним взаимодействовать.
IllegalArgumentException - если имя пути недействительно (т. е. содержит несколько последовательных символов слеша или заканчивается символом слеша и имеет длину более одного символа).
IllegalStateException - если этот узел (или предок) был удален методом removeNode(), а pathname не пустая строка ("").

удалитьУзел

public void removeNode() throws BackingStoreException
Реализует метод removeNode() в соответствии со спецификацией в Preferences.removeNode().

Эта реализация проверяет, является ли этот узел корневым; если да, то выбрасывает соответствующее исключение. Затем она блокирует родителя этого узла и вызывает рекурсивный вспомогательный метод, который обходит поддерево, укорененное в этом узле. Вспомогательный метод блокирует узел, на котором он был вызван, проверяет, не был ли он уже удален, а затем гарантирует, что все его дочерние узлы кэшированы: вызывается метод childrenNamesSpi(), и каждое возвращенное имя дочернего узла проверяется на включение в кэш дочерних узлов. Если дочерний узел еще не кэширован, вызывается метод childSpi(String) для создания экземпляра Preferences, и этот экземпляр помещается в кэш дочерних узлов. Затем вспомогательный метод рекурсивно вызывает себя для каждого узла, содержащегося в его кэше дочерних узлов. После этого он вызывает removeNodeSpi(), помечает себя как удаленный и удаляет себя из кэша дочерних узлов родителя. Наконец, если существуют слушатели изменений узла, он добавляет в очередь событие уведомления для обработки в потоке диспетчеризации событий.

Обратите внимание, что вспомогательный метод всегда вызывается с заблокированными всеми предками до "самого близкого не удаленного предка".

Specified by:
removeNode в классе Preferences
Исключения:
IllegalStateException - если этот узел (или предок) уже был удален методом removeNode().
UnsupportedOperationException - если этот метод вызывается для корневого узла.
BackingStoreException - если эта операция не может быть завершена из-за сбоя в базовом хранилище или невозможности с ним взаимодействовать.
См. также:
  • Preferences.flush()

имя

public String name()
Реализует метод name в соответствии со спецификацией в Preferences.name().

Эта реализация просто возвращает имя, переданное при создании этого узла.

Specified by:
name в классе Preferences
Возвращает:
имя узла предпочтения, относительно родителя.

абсолютныйПуть

public String absolutePath()
Реализует метод absolutePath в соответствии со спецификацией в Preferences.absolutePath().

Эта реализация просто возвращает абсолютное имя пути, вычисленное при создании этого узла (на основе имени, переданного конструктору этого узла, и имен, переданных конструкторам предков этого узла).

Specified by:
absolutePath в классе Preferences
Возвращает:
абсолютное имя пути узла предпочтения.

являетсяПользовательскимУзлом

public boolean isUserNode()
Реализует метод isUserNode в соответствии со спецификацией в Preferences.isUserNode().

Эта реализация сравнивает корневой узел этого узла (сохраненный в приватном поле) со значением, возвращаемым методом Preferences.userRoot(). Если ссылки на оба объекта идентичны, этот метод возвращает true.

Specified by:
isUserNode в классе Preferences
Возвращает:
true, если этот узел предпочтений находится в дереве пользовательских предпочтений, false, если он находится в дереве системных предпочтений.

добавитьСлушателяИзмененийПредпочтений

public void addPreferenceChangeListener(PreferenceChangeListener pcl)
Описание скопировано из класса: Preferences
Регистрирует указанного слушателя для получения событий изменения предпочтений для этого узла предпочтений. Событие изменения предпочтений генерируется при добавлении предпочтения в этот узел, удалении из этого узла или изменении значения, связанного с предпочтением. (События изменения предпочтений не генерируются методом Preferences.removeNode(), который генерирует событие изменения узла. События изменения предпочтений генерируются методом clear.)

Гарантируется, что события будут генерироваться только для изменений, внесенных в том же JVM, что и зарегистрированный слушатель, хотя некоторые реализации могут генерировать события для изменений, внесенных вне этой JVM. События могут генерироваться до того, как изменения будут сохранены. События не генерируются при изменении предпочтений в потомках этого узла; вызывающий код, желающий таких событий, должен зарегистрироваться у каждого потомка.

Specified by:
addPreferenceChangeListener в классе Preferences
Параметры:
pcl - слушатель изменений предпочтений для добавления.
См. также:
  • Preferences.removePreferenceChangeListener(PreferenceChangeListener)
  • Preferences.addNodeChangeListener(NodeChangeListener)

удалитьСлушателяИзмененийПредпочтений

public void removePreferenceChangeListener(PreferenceChangeListener pcl)
Описание скопировано из класса: Preferences
Удаляет указанного слушателя изменений предпочтений, чтобы он больше не получал события изменения предпочтений.
Specified by:
removePreferenceChangeListener в классе Preferences
Параметры:
pcl - слушатель изменений предпочтений для удаления.
См. также:
  • Preferences.addPreferenceChangeListener(PreferenceChangeListener)

addNodeChangeListener

public void addNodeChangeListener(NodeChangeListener ncl)
Описание скопировано из класса: Preferences
Регистрирует указанный слушатель для получения событий изменения узла для данного узла. Событие изменения узла генерируется при добавлении или удалении дочернего узла из этого узла. (Один вызов Preferences.removeNode() приводит к нескольким событиям изменения узла, по одному для каждого узла в поддереве, укоренённом в удалённом узле.)

Гарантируется получение событий только для изменений, произведённых в той же JVM, что и зарегистрированный слушатель, хотя некоторые реализации могут генерировать события и для изменений, произведённых вне этой JVM. События могут быть сгенерированы до того, как изменения станут постоянными. События не генерируются при добавлении или удалении косвенных потомков этого узла; для получения таких событий вызывающая сторона должна зарегистрироваться у каждого потомка.

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

Определено в:
addNodeChangeListener в классе Preferences
Параметры:
ncl - Добавляемый NodeChangeListener.
См. также:
  • Preferences.removeNodeChangeListener(NodeChangeListener)
  • Preferences.addPreferenceChangeListener(PreferenceChangeListener)

removeNodeChangeListener

public void removeNodeChangeListener(NodeChangeListener ncl)
Описание скопировано из класса: Preferences
Удаляет указанный NodeChangeListener, чтобы он больше не получал события изменения.
Определено в:
removeNodeChangeListener в классе Preferences
Параметры:
ncl - Удаляемый NodeChangeListener.
См. также:
  • Preferences.addNodeChangeListener(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(java.lang.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().
См. также:
  • flush()

syncSpi

protected abstract void syncSpi() throws BackingStoreException
Этот метод вызывается с заблокированным этим узлом. Контракт этого метода заключается в синхронизации любых кешированных настроек, хранящихся в этом узле, с любыми, хранящимися в базовом хранилище. (Совершенно возможно, что этот узел не существует в базовом хранилище, либо потому, что он был удален другой виртуальной машиной, либо потому, что он еще не был создан.) Обратите внимание, что этот метод не должен синхронизировать настройки в каких-либо дочерних узлах этого узла. Если базовая система хранения естественным образом синхронизирует все поддерево сразу, разработчик рекомендуется переопределить sync(), а не просто переопределить этот метод.

Если этот узел генерирует исключение BackingStoreException, исключение будет распространяться за пределы вызова sync().

Исключения:
BackingStoreException - если данная операция не может быть завершена из-за сбоя в базовом хранилище или невозможности с ним связаться.

flush

public void flush() throws BackingStoreException
Реализует метод flush в соответствии со спецификацией в Preferences.flush().

Эта реализация вызывает рекурсивный вспомогательный метод, который блокирует этот узел, вызывает flushSpi() для него, разблокирует этот узел и рекурсивно вызывает этот метод для каждого "кешированного дочернего элемента". Кешированный дочерний элемент — это дочерний элемент этого узла, который был создан в этой виртуальной машине и не был впоследствии удален. По сути, этот метод выполняет обход в глубину "кешированного поддерева", укорененного в этом узле, вызывая flushSpi() для каждого узла в поддереве, пока только этот узел заблокирован. Обратите внимание, что flushSpi() вызывается сверху вниз.

Если этот метод вызывается для узла, который был удален с помощью метода removeNode(), flushSpi() вызывается для этого узла, но не для других.

Указано в:
flush в классе Preferences
Исключения:
BackingStoreException - если данная операция не может быть завершена из-за сбоя в базовом хранилище или невозможности с ним связаться.
См. также:
  • flush()

flushSpi

protected abstract void flushSpi() throws BackingStoreException
Этот метод вызывается с заблокированным этим узлом. Контракт этого метода заключается в принудительной записи любых кешированных изменений содержимого этого узла настроек в базовое хранилище, гарантируя их сохранение. (Совершенно возможно, что этот узел не существует в базовом хранилище, либо потому, что он был удален другой виртуальной машиной, либо потому, что он еще не был создан.) Обратите внимание, что этот метод не должен сохранять настройки в каких-либо дочерних узлах этого узла. Если базовая система хранения естественным образом сохраняет все поддерево сразу, разработчик рекомендуется переопределить flush(), а не просто переопределить этот метод.

Если этот узел генерирует исключение 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 - если данные настроек нельзя считать из базового хранилища.
См. также:
  • Preferences.importPreferences(InputStream)

exportSubtree

public void exportSubtree(OutputStream os) throws IOException, BackingStoreException
Реализует метод exportSubtree в соответствии со спецификацией в Preferences.exportSubtree(OutputStream).
Указано в:
exportSubtree в классе Preferences
Параметры:
os - поток вывода, в который необходимо вывести XML-документ.
Исключения:
IOException - если запись в указанный поток вывода приводит к IOException.
BackingStoreException - если данные настроек нельзя считать из базового хранилища.
См. также:
  • Preferences.importPreferences(InputStream)
  • Preferences.exportNode(OutputStream)

© 1993, 2021, 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/17/docs/api/java.prefs/java/util/prefs/AbstractPreferences.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API