Класс ImmutableDescriptor
- java.lang.Object
-
- javax.management.ImmutableDescriptor
- Все реализуемые интерфейсы:
- Serializable, Cloneable, Descriptor
public class ImmutableDescriptor extends Object implements Descriptor
Неизменяемый дескриптор.
- С момента:
- 1.6
- См. также:
- Сериализованная форма
Поля
| Модификатор и тип | Поле и описание |
|---|---|
static ImmutableDescriptor |
EMPTY_DESCRIPTOR Пустой дескриптор. |
Конструкторы
| Конструктор и описание |
|---|
ImmutableDescriptor(Map<String,?> fields) Создаёт дескриптор, где имена и значения полей — ключи и значения заданного Map. |
ImmutableDescriptor(String... fields) Создаёт дескриптор, содержащий заданные поля. |
ImmutableDescriptor(String[] fieldNames,
Object[] fieldValues) Создаёт дескриптор, содержащий заданные поля и значения. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
Descriptor |
clone() Возвращает дескриптор, равный данному дескриптору. |
boolean |
equals(Object o) Сравнивает этот дескриптор с данным объектом. |
String[] |
getFieldNames() Возвращает все имена полей в дескрипторе. |
String[] |
getFields() Возвращает все поля, содержащиеся в этом дескрипторе, в виде массива строк. |
Object |
getFieldValue(String fieldName) Возвращает значение для определённого имени поля или null, если значение для этого имени отсутствует. |
Object[] |
getFieldValues(String... fieldNames) Возвращает все значения полей в дескрипторе в виде массива объектов. |
int |
hashCode() Возвращает значение хэш-кода для данного дескриптора. |
boolean |
isValid() Возвращает true, если все поля имеют допустимые значения, учитывая их имена. |
void |
removeField(String fieldName) Удаляет поле из дескриптора. |
void |
setField(String fieldName,
Object fieldValue) Данная операция не поддерживается, так как этот класс неизменяем. |
void |
setFields(String[] fieldNames,
Object[] fieldValues) Данная операция не поддерживается, так как этот класс неизменяем. |
String |
toString() Возвращает строковое представление объекта. |
static ImmutableDescriptor |
union(Descriptor... descriptors) Возвращает |
Методы, унаследованные от класса java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait Поля
EMPTY_DESCRIPTOR
public static final ImmutableDescriptor EMPTY_DESCRIPTOR
Пустой дескриптор.
Конструкторы
ImmutableDescriptor
public ImmutableDescriptor(String[] fieldNames,
Object[] fieldValues) Создаёт дескриптор, содержащий указанные поля и значения.
- Исключения:
-
IllegalArgumentException- если один из массивов равен null, или массивы имеют разную длину, или имя поля равно null или пустое, или одно и то же имя поля встречается более одного раза.
ImmutableDescriptor
public ImmutableDescriptor(String... fields)
Создаёт дескриптор, содержащий указанные поля. Каждая строка должна иметь вид fieldName=fieldValue. Имя поля заканчивается на первом символе =; например, если строка a=b=c, то имя поля a, а его значение b=c.
- Исключения:
-
IllegalArgumentException- если параметр равен null, или имя поля пустое, или одно и то же имя поля встречается более одного раза, или одна из строк не содержит символ=.
ImmutableDescriptor
public ImmutableDescriptor(Map<String,?> fields)
Создаёт дескриптор, где имена и значения полей являются ключами и значениями заданной карты.
- Исключения:
-
IllegalArgumentException- если параметр равен null, или имя поля равно null или пустое, или одно и то же имя поля встречается более одного раза (что может произойти, потому что имена полей не чувствительны к регистру).
Методы
union
public static ImmutableDescriptor union(Descriptor... descriptors)
Возвращает ImmutableDescriptor с содержимым, являющимся объединением указанных дескрипторов. Каждое имя поля, встречающееся в любом из дескрипторов, будет присутствовать в результате со значением, которое оно имеет в момент вызова метода. Последующие изменения в любом из дескрипторов не влияют на возвращаемый здесь ImmutableDescriptor.
В простейшем случае существует только один дескриптор, и возвращаемый ImmutableDescriptor представляет собой копию его полей на момент вызова этого метода:
Descriptor d = something(); ImmutableDescriptor copy = ImmutableDescriptor.union(d);
- Параметры:
-
descriptors- объединяемые дескрипторы. Любой из дескрипторов может быть равен null, в этом случае он пропускается. - Возвращает:
ImmutableDescriptorявляющийся объединением заданных дескрипторов. Возвращаемый объект может быть идентичен одному из входных дескрипторов, если это ImmutableDescriptor, содержащий все необходимые поля.- Исключения:
-
IllegalArgumentException- если два дескриптора содержат одно и то же имя поля с разными связанными значениями. Значения массивов примитивных типов считаются одинаковыми, если они одного типа с одними и теми же элементами. Значения массивов объектов считаются одинаковыми, еслиArrays.deepEquals(Object[],Object[])возвращает true.
getFieldValue
public final Object getFieldValue(String fieldName)
Описание скопировано из интерфейса: Descriptor
Возвращает значение для определённого имени поля или null, если для этого имени значения нет.
- Унаследовано от:
-
getFieldValueв интерфейсеDescriptor - Параметры:
-
fieldName- имя поля. - Возвращает:
- соответствующее значение или null, если поле отсутствует.
getFields
public final String[] getFields()
Описание скопировано из интерфейса: Descriptor
Возвращает все поля, содержащиеся в этом дескрипторе, в виде массива строк.
- Унаследовано от:
-
getFieldsв интерфейсеDescriptor - Возвращает:
- Массив строк полей в формате имяПоля=значениеПоля
Если значение поля не является строкой, то будет вызван метод toString() для него, и возвращённое значение, заключённое в скобки, будет использовано как значение поля в возвращаемом массиве. Если значение поля равно null, то значение поля в возвращаемом массиве будет пустым. Если дескриптор пуст, вы получите пустой массив. - См. также:
Descriptor.setFields(java.lang.String[], java.lang.Object[])
getFieldValues
public final Object[] getFieldValues(String... fieldNames)
Описание скопировано из интерфейса: Descriptor
Возвращает все значения полей в дескрипторе в виде массива объектов. Возвращаемые значения расположены в том же порядке, что и в массиве строк fieldNames.
- Унаследовано от:
-
getFieldValuesв интерфейсеDescriptor - Параметры:
-
fieldNames- Массив строк имён полей, для которых должны быть возвращены значения. Если массив пуст, то будет возвращён пустой массив. Если массив равен null, то будут возвращены все значения, как если бы параметром был массив, возвращённый методомDescriptor.getFieldNames(). Если имя поля в массиве не существует, включая случай, когда оно равно null или пустая строка, то для соответствующего элемента массива, возвращаемого в качестве результата, будет возвращено значение null. - Возвращает:
- Массив объектов значений полей. Если список
fieldNamesпуст, вы получите пустой массив.
getFieldNames
public final String[] getFieldNames()
Описание скопировано из интерфейса: Descriptor
Возвращает все имена полей в дескрипторе.
- Унаследовано от:
-
getFieldNamesв интерфейсеDescriptor - Возвращает:
- Массив строк имён полей. Если дескриптор пуст, вы получите пустой массив.
equals
public boolean equals(Object o)
Сравнивает этот дескриптор с заданным объектом. Объекты равны, если заданный объект также является дескриптором и если два дескриптора имеют одинаковые имена полей (возможно, различающиеся по регистру) и одинаковые связанные значения. Соответствующие значения для поля в двух дескрипторах равны, если выполняются следующие условия:
- Если одно из значений равно null, то другое также должно быть равно null.
- Если одно из значений является массивом примитивного типа, то другое также должно быть массивом примитивного типа того же типа с теми же элементами.
- Если одно из значений является массивом объектов, то другое также должно быть массивом объектов, и
Arrays.deepEquals(Object[],Object[])должно возвращать true. - В противном случае
Object.equals(Object)должно возвращать true.
- Унаследовано от:
-
equalsв интерфейсеDescriptor - Переопределяет:
-
equalsв классеObject - Параметры:
-
o- объект для сравнения. - Возвращает:
-
trueесли объекты одинаковые;falseв противном случае. - См. также:
-
Object.hashCode(),HashMap
hashCode
public int hashCode()
Возвращает значение хэш-кода для этого дескриптора. Хэш-код вычисляется как сумма хэш-кодов каждого поля в дескрипторе. Хэш-код поля с именем n и значением v равен n.toLowerCase().hashCode() ^ h. Здесь h - хэш-код v, вычисляемый следующим образом:
- Если
vравен null, тоhравен 0. - Если
vявляется массивом примитивных типов, тоhвычисляется с использованием соответствующей перегрузкиjava.util.Arrays.hashCode. - Если
vявляется массивом объектов, тоhвычисляется с помощьюArrays.deepHashCode(Object[]). - В противном случае
hравенv.hashCode().
- Унаследовано от:
-
hashCodeв интерфейсеDescriptor - Переопределяет:
-
hashCodeв классеObject - Возвращает:
- Значение хэш-кода для этого объекта.
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
toString
public String toString()
Описание скопировано из класса: Object
Возвращает строковое представление объекта. В общем случае метод toString возвращает строку, которая "текстово представляет" этот объект. Результат должен быть кратким, но информативным представлением, удобным для чтения человеком. Рекомендуется всем подклассам переопределить этот метод.
Метод toString для класса Object возвращает строку, состоящую из имени класса, экземпляром которого является объект, символа `@', и беззнакового шестнадцатеричного представления хэш-кода объекта. Другими словами, этот метод возвращает строку, равную значению:
getClass().getName() + '@' + Integer.toHexString(hashCode())
isValid
public boolean isValid()
Возвращает true, если все поля имеют допустимые значения, учитывая их имена. Этот метод всегда возвращает true, но подкласс может переопределить его, чтобы возвращать false, когда это уместно.
- Унаследовано от:
-
isValidв интерфейсеDescriptor - Возвращает:
- true, если значения допустимы.
- Исключения:
-
RuntimeOperationsException- если проверка валидности завершилась неудачей. Метод возвращает false, если дескриптор не валиден, но генерирует это исключение, если попытка определить валидность завершается неудачей.
clone
public Descriptor clone()
Возвращает дескриптор, равный этому дескриптору. Изменения в возвращаемом дескрипторе не повлияют на этот дескриптор, и наоборот.
Этот метод возвращает объект, на котором он вызван. Подкласс может переопределить его, чтобы вернуть другой объект при условии соблюдения контракта.
- Унаследовано от:
-
cloneв интерфейсеDescriptor - Переопределяет:
-
cloneв классеObject - Возвращает:
- клонированную копию этого экземпляра.
- Исключения:
-
RuntimeOperationsException- для недопустимого значения для имён полей или значений полей. Если построение дескриптора завершится неудачей по любой причине, будет сгенерировано это исключение. - См. также:
Cloneable
setFields
public final void setFields(String[] fieldNames,
Object[] fieldValues)
throws RuntimeOperationsException Данная операция не поддерживается, так как этот класс неизменяемый. Если этот вызов изменит изменяемый дескриптор с теми же данными, то будет брошено исключение RuntimeOperationsException, обертывающее UnsupportedOperationException. В противном случае поведение будет таким же, как и для изменяемого дескриптора: либо будет брошено исключение из-за некорректных параметров, либо никакого действия не будет.
- Указано в:
-
setFieldsв интерфейсеDescriptor - Параметры:
-
fieldNames- Массив строк имён полей. Массив и элементы массива не могут быть null. -
fieldValues- Массив объектов соответствующих значений полей. Массив не может быть null. Элементы массива могут быть null. - Исключения:
-
RuntimeOperationsException- если изменение не удалось по какой-либо причине. Обернутое исключение -IllegalArgumentException, еслиfieldNamesилиfieldValuesравно null, или если массивы имеют разную длину, или если в одном из них есть некорректное значение. Обернутое исключение -UnsupportedOperationException, если дескриптор неизменяемый, и вызов изменил бы его содержимое. - См. также:
Descriptor.getFields()
setField
public final void setField(String fieldName,
Object fieldValue)
throws RuntimeOperationsException Данная операция не поддерживается, так как этот класс неизменяемый. Если этот вызов изменит изменяемый дескриптор с теми же данными, то будет брошено исключение RuntimeOperationsException, обертывающее UnsupportedOperationException. В противном случае поведение будет таким же, как и для изменяемого дескриптора: либо будет брошено исключение из-за некорректных параметров, либо никакого действия не будет.
- Указано в:
-
setFieldв интерфейсеDescriptor - Параметры:
-
fieldName- Имя поля, которое нужно установить. Не может быть null или пустым. -
fieldValue- Значение поля, которое нужно установить для имени поля. Может быть null, если это допустимое значение для поля. - Исключения:
-
RuntimeOperationsException- если имя поля или значение поля некорректны (обернутое исключение -IllegalArgumentException); или если дескриптор неизменяемый (обернутое исключение -UnsupportedOperationException).
removeField
public final void removeField(String fieldName)
Удаляет поле из дескриптора.
- Указано в:
-
removeFieldв интерфейсеDescriptor - Параметры:
-
fieldName- Строковое имя поля, которое нужно удалить. Если имя поля некорректно или поля не найдено, исключение не бросается. - Исключения:
-
RuntimeOperationsException- если поле с заданным именем существует и дескриптор неизменяемый. Обернутое исключение будетUnsupportedOperationException.
© 1993, 2020, 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.