Spec-Zone.ru › OpenJDK 27

Класс Field

java.lang.Object
java.lang.reflect.AccessibleObject
java.lang.reflect.Field
Все реализуемые интерфейсы:
AnnotatedElement, Member
public final class Field extends AccessibleObject implements Member
Объект Field предоставляет информацию о единственном поле класса или интерфейса и динамический доступ к нему. Отражённое поле может быть полем класса (статическим) или полем экземпляра.

Объект Field допускает расширяющие преобразования при чтении или записи, но выбрасывает IllegalArgumentException, если при этом потребовалось бы сужающее преобразование.

Начиная с:
1.1
См. также:
  • Member
  • Class
  • Class.getFields()
  • Class.getField(String)
  • Class.getDeclaredFields()
  • Class.getDeclaredField(String)

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

Поля, объявленные в интерфейсе Member

DECLARED, PUBLIC
Модификатор и тип Поле Описание
static final int DECLARED
Определяет набор объявленных членов класса или интерфейса.
static final int PUBLIC
Определяет набор всех открытых членов класса или интерфейса, включая унаследованные члены.

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

Модификатор и тип Метод Описание
Set<AccessFlag> accessFlags()
Возвращает неизменяемый набор флагов доступа для этого поля, который может быть пустым.
boolean equals(Object obj)
Сравнивает этот объект Field с указанным объектом.
Object get(Object obj)
Возвращает значение поля, представленного этим объектом Field, для указанного объекта.
AnnotatedType getAnnotatedType()
Возвращает объект AnnotatedType, представляющий использование типа для указания объявленного типа поля, представленного этим Field.
<T extends Annotation>
T
getAnnotation(Class<T> annotationClass)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, иначе возвращает null.
<T extends Annotation>
T[]
getAnnotationsByType(Class<T> annotationClass)
Возвращает аннотации, связанные с этим элементом.
boolean getBoolean(Object obj)
Получает значение статического поля или поля экземпляра типа boolean.
byte getByte(Object obj)
Получает значение статического поля или поля экземпляра типа byte.
char getChar(Object obj)
Получает значение статического поля или поля экземпляра типа char либо другого примитивного типа, который можно преобразовать к типу char с помощью расширяющего преобразования.
Class<?> getDeclaringClass()
Возвращает объект Class, представляющий класс или интерфейс, объявляющий поле, представленное этим объектом Field.
double getDouble(Object obj)
Получает значение статического поля или поля экземпляра типа double либо другого примитивного типа, который можно преобразовать к типу double с помощью расширяющего преобразования.
float getFloat(Object obj)
Получает значение статического поля или поля экземпляра типа float либо другого примитивного типа, который можно преобразовать к типу float с помощью расширяющего преобразования.
Type getGenericType()
Возвращает объект Type, представляющий объявленный тип поля, представленного этим объектом Field.
int getInt(Object obj)
Получает значение статического поля или поля экземпляра типа int либо другого примитивного типа, который можно преобразовать к типу int с помощью расширяющего преобразования.
long getLong(Object obj)
Получает значение статического поля или поля экземпляра типа long либо другого примитивного типа, который можно преобразовать к типу long с помощью расширяющего преобразования.
int getModifiers()
Возвращает модификаторы языка Java для поля, представленного этим объектом Field, в виде целого числа.
String getName()
Возвращает имя поля, представленного этим объектом Field.
short getShort(Object obj)
Получает значение статического поля или поля экземпляра типа short либо другого примитивного типа, который можно преобразовать к типу short с помощью расширяющего преобразования.
Class<?> getType()
Возвращает объект Class, определяющий объявленный тип поля, представленного этим объектом Field.
int hashCode()
Возвращает хеш-код этого объекта Field.
boolean isEnumConstant()
Возвращает true, если это поле представляет элемент перечислимого класса; в противном случае возвращает false.
boolean isSynthetic()
Возвращает true, если это поле является синтетическим; в противном случае возвращает false.
void set(Object obj, Object value)
Устанавливает для поля, представленного этим объектом Field, новое указанное значение в указанном объекте.
void setAccessible(boolean flag)
Устанавливает для отражённого объекта флаг accessible в указанное логическое значение.
void setBoolean(Object obj, boolean z)
Устанавливает значение поля в указанном объекте как boolean.
void setByte(Object obj, byte b)
Устанавливает значение поля в указанном объекте как byte.
void setChar(Object obj, char c)
Устанавливает значение поля в указанном объекте как char.
void setDouble(Object obj, double d)
Устанавливает значение поля в указанном объекте как double.
void setFloat(Object obj, float f)
Устанавливает значение поля в указанном объекте как float.
void setInt(Object obj, int i)
Устанавливает значение поля в указанном объекте как int.
void setLong(Object obj, long l)
Устанавливает значение поля в указанном объекте как long.
void setShort(Object obj, short s)
Устанавливает значение поля в указанном объекте как short.
String toGenericString()
Возвращает строку с описанием этого объекта Field, включая его обобщённый тип.
String toString()
Возвращает строку с описанием этого объекта Field.

Методы, объявленные в классе AccessibleObject

canAccess, getAnnotations, getDeclaredAnnotation, getDeclaredAnnotations, getDeclaredAnnotationsByType, isAccessible, isAnnotationPresent, setAccessible, trySetAccessible
Модификатор и тип Метод Описание
final boolean canAccess(Object obj)
Проверяет, может ли вызывающий код получить доступ к этому отражённому объекту.
Annotation[] getAnnotations()
Возвращает аннотации, присутствующие у этого элемента.
<T extends Annotation>
T
getDeclaredAnnotation(Class<T> annotationClass)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует непосредственно, иначе возвращает null.
Annotation[] getDeclaredAnnotations()
Возвращает аннотации, непосредственно присутствующие у этого элемента.
<T extends Annotation>
T[]
getDeclaredAnnotationsByType(Class<T> annotationClass)
Возвращает аннотацию (аннотации) этого элемента для указанного типа, если такие аннотации присутствуют непосредственно или присутствуют косвенно.
boolean isAccessible()
Устарело.
Этот метод устарел, поскольку его имя подразумевает проверку доступности отражённого объекта, хотя на самом деле оно указывает, отключены ли проверки контроля доступа языка Java.
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
Возвращает true, если аннотация указанного типа присутствует у этого элемента, иначе false.
static void setAccessible(AccessibleObject[] array, boolean flag)
Вспомогательный метод для установки флага accessible для массива отражённых объектов.
final boolean trySetAccessible()
Устанавливает для отражённого объекта флаг accessible в значение true, если это возможно.

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
protected void finalize()
Устарело, планируется удаление: этот элемент API планируется удалить в будущей версии.
Финализация устарела и планируется к удалению в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

setAccessible

public void setAccessible(boolean flag)
Устанавливает флаг accessible для этого отражённого объекта в указанное логическое значение. Значение true означает, что отражённый объект должен подавлять проверки контроля доступа языка Java при его использовании. Значение false означает, что отражённый объект должен выполнять проверки контроля доступа языка Java при его использовании с учётом варианта, указанного в описании класса.

Этот метод может использоваться вызывающим кодом в классе C для предоставления доступа к member класса declaring class D, если выполняется любое из следующих условий:

  • C и D находятся в одном модуле.
  • Элемент является public, а D является public в пакете, который модуль, содержащий D, exports как минимум модулю, содержащему C.
  • Элемент является protected static, D является public в пакете, который модуль, содержащий D, экспортирует как минимум модулю, содержащему C, а C является подклассом D.
  • D находится в пакете, который модуль, содержащий D, opens как минимум модулю, содержащему C. Все пакеты в безымянных и открытых модулях открыты для всех модулей, поэтому этот метод всегда выполняется успешно, когда D находится в безымянном или открытом модуле.

Этот метод может использоваться кодом JNI без вызывающего класса в стеке для предоставления доступа к member класса declaring class D тогда и только тогда, когда:

  • Элемент является public, а D является public в пакете, который модуль, содержащий D, exports безусловно.

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

Если этот отражённый объект представляет нефинальное поле и этот метод используется для предоставления доступа, разрешается как чтение, так и запись поля.

Если этот отражённый объект представляет немодифицируемое финальное поле, предоставление доступа разрешает только чтение. Любая попытка установить значение поля приводит к выбросу IllegalAccessException. Следующие поля являются немодифицируемыми:

  • статические финальные поля, объявленные в любом классе или интерфейсе
  • финальные поля, объявленные в записи
  • финальные поля, объявленные в скрытом классе

Если этот отражённый объект представляет нестатическое финальное поле класса, не являющегося классом записи или скрытым классом, предоставление доступа разрешает чтение. Проверка возможности записи выполняется при попытке установить значение поля.

Переопределяет:
setAccessible в классе AccessibleObject
Параметры:
flag - новое значение флага accessible
Исключения:
InaccessibleObjectException - если невозможно предоставить доступ
Внешние спецификации
  • Спецификация Java Native Interface
См. также:
  • AccessibleObject.trySetAccessible()
  • MethodHandles.privateLookupIn(Class, MethodHandles.Lookup)

getDeclaringClass

public Class<?> getDeclaringClass()
Возвращает объект Class, представляющий класс или интерфейс, в котором объявлено поле, представленное этим объектом Field.
Указан в:
getDeclaringClass в интерфейсе Member
Возвращает:
объект, представляющий класс, объявляющий базовый элемент

getName

public String getName()
Возвращает имя поля, представленного этим объектом Field.
Указан в:
getName в интерфейсе Member
Возвращает:
простое имя базового элемента

getModifiers

public int getModifiers()
Возвращает модификаторы языка Java для поля, представленного этим объектом Field, в виде целого числа. Для декодирования модификаторов следует использовать класс Modifier.
Указан в:
getModifiers в интерфейсе Member
Возвращает:
модификаторы языка Java для базового элемента
См. Спецификацию языка Java:
8.3 Объявления полей
9.3 Объявления полей (констант)
См. также:
  • Modifier
  • accessFlags()

accessFlags

public Set<AccessFlag> accessFlags()
Возвращает, возможно пустой, неизменяемый набор флагов доступа для этого поля.
Указан в:
accessFlags в интерфейсе Member
Возвращает:
возможно пустой неизменяемый набор флагов доступа для этого поля
См. Спецификацию виртуальной машины Java:
4.5 Поля
Появился в версии:
20
См. также:
  • getModifiers()

isEnumConstant

public boolean isEnumConstant()
Возвращает true, если это поле представляет элемент перечислимого класса; в противном случае возвращает false.
Возвращает:
true тогда и только тогда, когда это поле представляет элемент перечислимого класса.
См. Спецификацию языка Java:
8.9.1 Константы перечисления
Появился в версии:
1.5

isSynthetic

public boolean isSynthetic()
Возвращает true, если это поле является синтетическим; в противном случае возвращает false.
Указан в:
isSynthetic в интерфейсе Member
Возвращает:
true тогда и только тогда, когда это поле является синтетическим согласно определению в Спецификации языка Java.
Появился в версии:
1.5
См. также:
  • Моделирование языка программирования Java и JVM в базовом API отражения

getType

public Class<?> getType()
Возвращает объект Class, определяющий объявленный тип поля, представленного этим объектом Field.
Возвращает:
объект Class, определяющий объявленный тип поля, представленного этим объектом

getGenericType

public Type getGenericType()
Возвращает объект Type, представляющий объявленный тип поля, представленного этим объектом Field.

Если объявленный тип поля является параметризованным типом, возвращаемый объект Type должен точно отражать фактические аргументы типа, использованные в исходном коде.

Если тип базового поля является переменной типа или параметризованным типом, он создаётся. В противном случае он разрешается.

Возвращает:
объект Type, представляющий объявленный тип поля, представленного этим объектом Field
Исключения:
GenericSignatureFormatError - если обобщённая сигнатура поля не соответствует формату, заданному в Спецификации виртуальной машины Java
TypeNotPresentException - если обобщённая сигнатура типа базового поля ссылается на несуществующее объявление класса или интерфейса
MalformedParameterizedTypeException - если обобщённая сигнатура базового поля ссылается на параметризованный тип, который невозможно создать по какой-либо причине
Появился в версии:
1.5

equals

public boolean equals(Object obj)
Сравнивает этот объект Field с указанным объектом. Возвращает true, если объекты совпадают. Два объекта Field совпадают, если они объявлены одним и тем же классом и имеют одинаковые имена и типы.
Переопределяет:
equals в классе Object
Параметры:
obj - объект-ссылка, с которым выполняется сравнение.
Возвращает:
true, если этот объект совпадает с аргументом obj; false в противном случае.
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Возвращает хеш-код этого объекта Field. Он вычисляется как исключающее ИЛИ хеш-кодов имени класса, объявляющего базовое поле, и имени самого поля.
Переопределяет:
hashCode в классе Object
Возвращает:
значение хеш-кода этого объекта
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

toString

public String toString()
Возвращает строку с описанием этого объекта Field. Формат: модификаторы доступа поля, если они есть, затем тип поля, пробел, полное имя класса, объявляющего поле, точка и имя поля. Например:
   public static final int java.lang.Thread.MIN_PRIORITY
   private int java.io.FileDescriptor.fd

Модификаторы располагаются в каноническом порядке, указанном в «Спецификации языка Java». Сначала идут public, protected или private, а затем остальные модификаторы в следующем порядке: static, final, transient, volatile.

Переопределяет:
toString в классе Object
Возвращает:
строку с описанием этого объекта Field
См. Спецификацию языка Java:
8.3.1 Модификаторы полей

toGenericString

public String toGenericString()
Возвращает строку с описанием этого объекта Field, включая его обобщённый тип. Формат: модификаторы доступа поля, если они есть, затем обобщённый тип поля, пробел, полное имя класса, объявляющего поле, точка и имя поля.

Модификаторы располагаются в каноническом порядке, указанном в «Спецификации языка Java». Сначала идут public, protected или private, а затем остальные модификаторы в следующем порядке: static, final, transient, volatile.

Возвращает:
строку с описанием этого объекта Field, включая его обобщённый тип
См. Спецификацию языка Java:
8.3.1 Модификаторы полей
Появился в версии:
1.5

get

public Object get(Object obj) throws IllegalArgumentException, IllegalAccessException
Возвращает значение поля, представленного этим объектом Field, для указанного объекта. Если значение имеет примитивный тип, оно автоматически упаковывается в объект.

Значение базового поля получается следующим образом:

Если базовое поле является статическим, аргумент obj игнорируется; он может быть равен null.

В противном случае базовое поле является полем экземпляра. Если указанный аргумент obj равен null, метод выбрасывает NullPointerException. Если указанный объект не является экземпляром класса или интерфейса, объявляющего базовое поле, метод выбрасывает IllegalArgumentException.

Если этот объект Field обеспечивает контроль доступа языка Java, а базовое поле недоступно, метод выбрасывает IllegalAccessException. Если базовое поле является статическим, класс, объявивший поле, инициализируется, если он ещё не был инициализирован.

В противном случае значение извлекается из базового поля экземпляра или статического поля. Если поле имеет примитивный тип, перед возвратом значение упаковывается в объект; в противном случае оно возвращается без изменений.

Если поле скрыто в типе obj, его значение получается согласно приведённым выше правилам.

Параметры:
obj - объект, из которого извлекается значение представленного поля
Возвращает:
значение представленного поля объекта obj; перед возвратом примитивные значения упаковываются в соответствующий объект
Исключения:
IllegalAccessException - если этот объект Field обеспечивает контроль доступа языка Java, а базовое поле недоступно.
IllegalArgumentException - если указанный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией).
NullPointerException - если указанный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError - если инициализация, вызванная этим методом, завершается неудачно.

getBoolean

public boolean getBoolean(Object obj) throws IllegalArgumentException, IllegalAccessException
Получает значение статического поля или поля экземпляра типа boolean.
Параметры:
obj - объект, из которого извлекается значение boolean
Возвращает:
значение поля boolean
Исключения:
IllegalAccessException - если этот объект Field обеспечивает контроль доступа языка Java, а базовое поле недоступно.
IllegalArgumentException - если указанный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если значение поля нельзя преобразовать к типу boolean путём расширяющего преобразования.
NullPointerException - если указанный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError - если инициализация, вызванная этим методом, завершается неудачно.
См. также:
  • get(Object)

getByte

public byte getByte(Object obj) throws IllegalArgumentException, IllegalAccessException
Получает значение статического поля или поля экземпляра типа byte.
Параметры:
obj - объект, из которого извлекается значение byte
Возвращает:
значение поля byte
Исключения:
IllegalAccessException - если этот объект Field обеспечивает контроль доступа языка Java, а базовое поле недоступно.
IllegalArgumentException - если указанный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если значение поля нельзя преобразовать к типу byte путём расширяющего преобразования.
NullPointerException - если указанный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError - если инициализация, вызванная этим методом, завершается неудачно.
См. также:
  • get(Object)

getChar

public char getChar(Object obj) throws IllegalArgumentException, IllegalAccessException
Получает значение статического поля или поля экземпляра типа char либо другого примитивного типа, преобразуемого к типу char посредством расширяющего преобразования.
Параметры:
obj - объект, из которого извлекается значение char
Возвращает:
значение поля, преобразованное к типу char
Исключения:
IllegalAccessException - если этот объект Field обеспечивает контроль доступа языка Java, а базовое поле недоступно.
IllegalArgumentException - если указанный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если значение поля нельзя преобразовать к типу char путём расширяющего преобразования.
NullPointerException - если указанный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError - если инициализация, вызванная этим методом, завершается неудачно.
См. также:
  • get(Object)

getShort

public short getShort(Object obj) throws IllegalArgumentException, IllegalAccessException
Получает значение статического поля или поля экземпляра типа short либо другого примитивного типа, преобразуемого к типу short посредством расширяющего преобразования.
Параметры:
obj - объект, из которого извлекается значение short
Возвращает:
значение поля, преобразованное к типу short
Исключения:
IllegalAccessException - если этот объект Field обеспечивает контроль доступа языка Java, а базовое поле недоступно.
IllegalArgumentException - если указанный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если значение поля нельзя преобразовать к типу short путём расширяющего преобразования.
NullPointerException - если указанный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError - если инициализация, вызванная этим методом, завершается неудачно.
См. также:
  • get(Object)

getInt

public int getInt(Object obj) throws IllegalArgumentException, IllegalAccessException
Получает значение статического поля или поля экземпляра типа int либо другого примитивного типа, преобразуемого к типу int посредством расширяющего преобразования.
Параметры:
obj - объект, из которого извлекается значение int
Возвращает:
значение поля, преобразованное к типу int
Исключения:
IllegalAccessException - если этот объект Field обеспечивает контроль доступа языка Java, а базовое поле недоступно.
IllegalArgumentException - если указанный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если значение поля нельзя преобразовать к типу int путём расширяющего преобразования.
NullPointerException - если указанный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError - если инициализация, вызванная этим методом, завершается неудачно.
См. также:
  • get(Object)

getLong

public long getLong(Object obj) throws IllegalArgumentException, IllegalAccessException
Получает значение статического поля или поля экземпляра типа long либо другого примитивного типа, преобразуемого к типу long посредством расширяющего преобразования.
Параметры:
obj - объект, из которого извлекается значение long
Возвращает:
значение поля, преобразованное к типу long
Исключения:
IllegalAccessException - если этот объект Field обеспечивает контроль доступа языка Java, а базовое поле недоступно.
IllegalArgumentException - если указанный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если значение поля нельзя преобразовать к типу long путём расширяющего преобразования.
NullPointerException - если указанный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError - если инициализация, вызванная этим методом, завершается неудачно.
См. также:
  • get(Object)

getFloat

public float getFloat(Object obj) throws IllegalArgumentException, IllegalAccessException
Получает значение статического поля или поля экземпляра типа float либо другого примитивного типа, преобразуемого к типу float посредством расширяющего преобразования.
Параметры:
obj - объект, из которого извлекается значение float
Возвращает:
значение поля, преобразованное к типу float
Исключения:
IllegalAccessException - если этот объект Field обеспечивает контроль доступа языка Java, а базовое поле недоступно.
IllegalArgumentException - если указанный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если значение поля нельзя преобразовать к типу float путём расширяющего преобразования.
NullPointerException - если указанный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError - если инициализация, вызванная этим методом, завершается неудачно.
См. также:
  • get(Object)

getDouble

public double getDouble(Object obj) throws IllegalArgumentException, IllegalAccessException
Получает значение статического поля или поля экземпляра типа double либо другого примитивного типа, преобразуемого к типу double посредством расширяющего преобразования.
Параметры:
obj - объект, из которого извлекается значение double
Возвращает:
значение поля, преобразованное к типу double
Исключения:
IllegalAccessException - если этот объект Field обеспечивает контроль доступа языка Java, а базовое поле недоступно.
IllegalArgumentException - если указанный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если значение поля нельзя преобразовать к типу double путём расширяющего преобразования.
NullPointerException - если указанный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError - если инициализация, вызванная этим методом, завершается неудачно.
См. также:
  • get(Object)

set

public void set(Object obj, Object value) throws IllegalArgumentException, IllegalAccessException
Устанавливает для поля, представленного этим объектом Field, указанное новое значение в заданном объекте. Новое значение автоматически распаковывается, если базовое поле имеет примитивный тип.

Операция выполняется следующим образом:

Если базовое поле является статическим, аргумент obj игнорируется; он может быть null.

В противном случае базовое поле является полем экземпляра. Если заданный объект равен null, метод выбрасывает NullPointerException. Если заданный объект не является экземпляром класса или интерфейса, объявляющего базовое поле, метод выбрасывает IllegalArgumentException.

Если этот объект Field обеспечивает соблюдение правил управления доступом языка Java и базовое поле недоступно, метод выбрасывает IllegalAccessException.

Если базовое поле является final, этот объект Field имеет доступ на запись тогда и только тогда, когда выполнены все следующие условия, где D — это объявляющий класс поля:

  • setAccessible(true) был успешно вызван для этого объекта Field.
  • изменение final-полей разрешено для модуля вызывающего кода.
  • Выполняется хотя бы одно из следующих условий:
    1. D и класс вызывающего кода находятся в одном модуле.
    2. Поле является public, а D находится public в пакете, который содержащий D модуль экспортирует как минимум для модуля вызывающего кода.
    3. D находится в пакете, открытом для модуля вызывающего кода.
  • D не является классом-записью.
  • D не является скрытым классом.
  • Поле не является статическим.

Если хотя бы одно из перечисленных выше условий не выполнено, этот метод выбрасывает IllegalAccessException.

Эти условия строже условий, заданных для setAccessible(boolean) с целью подавления проверок доступа. В частности, обновление модуля для экспорта или открытия пакета не может использоваться, чтобы разрешить доступ на запись к final-полям с помощью методов set, определённых в Field. Условие (b) не выполнено, если модуль, содержащий D, был обновлён с помощью addExports, чтобы экспортировать пакет для модуля вызывающего кода. Условие (c) не выполнено, если модуль, содержащий D, был обновлён с помощью addOpens, чтобы открыть пакет для модуля вызывающего кода.

Этот метод может быть вызван из кода JNI, когда в стеке нет класса вызывающего кода. В этом случае, если базовое поле является final, этот объект Field имеет доступ на запись тогда и только тогда, когда выполнены все следующие условия, где D — это объявляющий класс поля:

  • setAccessible(true) был успешно вызван для этого объекта Field.
  • Изменение final-полей разрешено для безымянного модуля.
  • Поле является public, а D находится public в пакете, экспортируемом для всех модулей.
  • D не является классом-записью.
  • D не является скрытым классом.
  • Поле не является статическим.

Если хотя бы одно из перечисленных выше условий не выполнено, этот метод выбрасывает IllegalAccessException.

Установка значения final-поля таким способом имеет смысл только при десериализации или восстановлении экземпляров классов с незаданными final-полями, до того как они станут доступны другим частям программы. Использование в любом другом контексте может привести к непредсказуемым последствиям, в том числе к тому, что другие части программы продолжат использовать исходное значение этого поля.

Если базовое поле имеет примитивный тип, выполняется попытка распаковки нового значения в значение примитивного типа. Если эта попытка завершается неудачей, метод выбрасывает IllegalArgumentException.

Если после возможной распаковки новое значение нельзя преобразовать к типу базового поля посредством тождественного или расширяющего преобразования, метод выбрасывает IllegalArgumentException.

Если базовое поле является статическим, класс, объявивший это поле, инициализируется, если он ещё не был инициализирован.

Полю присваивается новое значение после возможной распаковки и расширяющего преобразования.

Если в типе obj поле скрыто, значение поля устанавливается согласно приведённым выше правилам.

Параметры:
obj — объект, поле которого следует изменить
value — новое значение поля obj, которое изменяется
Исключения:
IllegalAccessException — если этот объект Field обеспечивает соблюдение правил управления доступом языка Java, а базовое поле недоступно или является final; либо если этот объект Field не имеет доступа на запись.
IllegalArgumentException — если заданный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если не удаётся выполнить распаковку.
NullPointerException — если заданный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError — если не удаётся выполнить инициализацию, вызванную этим методом.
См. также:
  • Методы изменения

setBoolean

public void setBoolean(Object obj, boolean z) throws IllegalArgumentException, IllegalAccessException
Устанавливает значение поля типа boolean в заданном объекте. Этот метод эквивалентен set(obj, zObj), где zObj — объект Boolean, а zObj.booleanValue() == z.
Параметры:
obj — объект, поле которого следует изменить
z — новое значение поля obj, которое изменяется
Исключения:
IllegalAccessException — если этот объект Field обеспечивает соблюдение правил управления доступом языка Java, а базовое поле недоступно или является final; либо если этот объект Field не имеет доступа на запись.
IllegalArgumentException — если заданный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если не удаётся выполнить распаковку.
NullPointerException — если заданный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError — если не удаётся выполнить инициализацию, вызванную этим методом.
См. также:
  • set(Object, Object)

setByte

public void setByte(Object obj, byte b) throws IllegalArgumentException, IllegalAccessException
Устанавливает значение поля типа byte в заданном объекте. Этот метод эквивалентен set(obj, bObj), где bObj — объект Byte, а bObj.byteValue() == b.
Параметры:
obj — объект, поле которого следует изменить
b — новое значение поля obj, которое изменяется
Исключения:
IllegalAccessException — если этот объект Field обеспечивает соблюдение правил управления доступом языка Java, а базовое поле недоступно или является final; либо если этот объект Field не имеет доступа на запись.
IllegalArgumentException — если заданный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если не удаётся выполнить распаковку.
NullPointerException — если заданный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError — если не удаётся выполнить инициализацию, вызванную этим методом.
См. также:
  • set(Object, Object)

setChar

public void setChar(Object obj, char c) throws IllegalArgumentException, IllegalAccessException
Устанавливает значение поля типа char в заданном объекте. Этот метод эквивалентен set(obj, cObj), где cObj — объект Character, а cObj.charValue() == c.
Параметры:
obj — объект, поле которого следует изменить
c — новое значение поля obj, которое изменяется
Исключения:
IllegalAccessException — если этот объект Field обеспечивает соблюдение правил управления доступом языка Java, а базовое поле недоступно или является final; либо если этот объект Field не имеет доступа на запись.
IllegalArgumentException — если заданный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если не удаётся выполнить распаковку.
NullPointerException — если заданный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError — если не удаётся выполнить инициализацию, вызванную этим методом.
См. также:
  • set(Object, Object)

setShort

public void setShort(Object obj, short s) throws IllegalArgumentException, IllegalAccessException
Устанавливает значение поля типа short в заданном объекте. Этот метод эквивалентен set(obj, sObj), где sObj — объект Short, а sObj.shortValue() == s.
Параметры:
obj — объект, поле которого следует изменить
s — новое значение поля obj, которое изменяется
Исключения:
IllegalAccessException — если этот объект Field обеспечивает соблюдение правил управления доступом языка Java, а базовое поле недоступно или является final; либо если этот объект Field не имеет доступа на запись.
IllegalArgumentException — если заданный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если не удаётся выполнить распаковку.
NullPointerException — если заданный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError — если не удаётся выполнить инициализацию, вызванную этим методом.
См. также:
  • set(Object, Object)

setInt

public void setInt(Object obj, int i) throws IllegalArgumentException, IllegalAccessException
Устанавливает значение поля типа int в заданном объекте. Этот метод эквивалентен set(obj, iObj), где iObj — объект Integer, а iObj.intValue() == i.
Параметры:
obj — объект, поле которого следует изменить
i — новое значение поля obj, которое изменяется
Исключения:
IllegalAccessException — если этот объект Field обеспечивает соблюдение правил управления доступом языка Java, а базовое поле недоступно или является final; либо если этот объект Field не имеет доступа на запись.
IllegalArgumentException — если заданный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если не удаётся выполнить распаковку.
NullPointerException — если заданный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError — если не удаётся выполнить инициализацию, вызванную этим методом.
См. также:
  • set(Object, Object)

setLong

public void setLong(Object obj, long l) throws IllegalArgumentException, IllegalAccessException
Устанавливает значение поля типа long в заданном объекте. Этот метод эквивалентен set(obj, lObj), где lObj — объект Long, а lObj.longValue() == l.
Параметры:
obj — объект, поле которого следует изменить
l — новое значение поля obj, которое изменяется
Исключения:
IllegalAccessException — если этот объект Field обеспечивает соблюдение правил управления доступом языка Java, а базовое поле недоступно или является final; либо если этот объект Field не имеет доступа на запись.
IllegalArgumentException — если заданный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если не удаётся выполнить распаковку.
NullPointerException — если заданный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError — если не удаётся выполнить инициализацию, вызванную этим методом.
См. также:
  • set(Object, Object)

setFloat

public void setFloat(Object obj, float f) throws IllegalArgumentException, IllegalAccessException
Устанавливает значение поля типа float в заданном объекте. Этот метод эквивалентен set(obj, fObj), где fObj — объект Float, а fObj.floatValue() == f.
Параметры:
obj — объект, поле которого следует изменить
f — новое значение поля obj, которое изменяется
Исключения:
IllegalAccessException — если этот объект Field обеспечивает соблюдение правил управления доступом языка Java, а базовое поле недоступно или является final; либо если этот объект Field не имеет доступа на запись.
IllegalArgumentException — если заданный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если не удаётся выполнить распаковку.
NullPointerException — если заданный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError — если не удаётся выполнить инициализацию, вызванную этим методом.
См. также:
  • set(Object, Object)

setDouble

public void setDouble(Object obj, double d) throws IllegalArgumentException, IllegalAccessException
Устанавливает значение поля типа double в заданном объекте. Этот метод эквивалентен set(obj, dObj), где dObj — объект Double, а dObj.doubleValue() == d.
Параметры:
obj — объект, поле которого следует изменить
d — новое значение поля obj, которое изменяется
Исключения:
IllegalAccessException — если этот объект Field обеспечивает соблюдение правил управления доступом языка Java, а базовое поле недоступно или является final; либо если этот объект Field не имеет доступа на запись.
IllegalArgumentException — если заданный объект не является экземпляром класса или интерфейса, объявляющего базовое поле (или его подклассом либо реализацией), либо если не удаётся выполнить распаковку.
NullPointerException — если заданный объект равен null, а поле является полем экземпляра.
ExceptionInInitializerError — если не удаётся выполнить инициализацию, вызванную этим методом.
См. также:
  • set(Object, Object)

getAnnotation

public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация имеется; в противном случае возвращает null.

Обратите внимание: любая аннотация, возвращаемая этим методом, является аннотацией объявления.

Определено в:
getAnnotation в интерфейсе AnnotatedElement
Переопределяет:
getAnnotation в классе AccessibleObject
Параметры типа:
T — тип аннотации для поиска и возврата, если она имеется
Параметры:
annotationClass — объект Class, соответствующий типу аннотации
Возвращает:
аннотацию этого элемента для указанного типа аннотации, если она имеется у этого элемента; в противном случае возвращает null
Исключения:
NullPointerException — если заданный класс аннотации равен null
С момента:
1.5

getAnnotationsByType

public <T extends Annotation> T[] getAnnotationsByType(Class<T> annotationClass)
Возвращает аннотации, связанные с этим элементом. Если с этим элементом не связано ни одной аннотации, возвращаемое значение — массив длины 0. Отличие этого метода от AnnotatedElement.getAnnotation(Class) состоит в том, что этот метод определяет, является ли его аргумент повторяемым типом аннотации (JLS §9.6), и, если да, пытается найти одну или несколько аннотаций этого типа, «заглядывая внутрь» контейнерной аннотации. Вызывающий этот метод код может изменять возвращённый массив; это никак не повлияет на массивы, возвращаемые другим вызывающим кодам.

Обратите внимание: любые аннотации, возвращаемые этим методом, являются аннотациями объявления.

Определено в:
getAnnotationsByType в интерфейсе AnnotatedElement
Переопределяет:
getAnnotationsByType в классе AccessibleObject
Параметры типа:
T — тип аннотации для поиска и возврата, если она имеется
Параметры:
annotationClass — объект Class, соответствующий типу аннотации
Возвращает:
все аннотации этого элемента для указанного типа, связанные с этим элементом; в противном случае возвращает массив нулевой длины
Исключения:
NullPointerException — если заданный класс аннотации равен null
С момента:
1.8

getAnnotatedType

public AnnotatedType getAnnotatedType()
Возвращает объект AnnotatedType, представляющий использование типа для указания объявленного типа поля, представленного этим объектом Field.
Возвращает:
объект, представляющий объявленный тип поля, представленного этим объектом Field
С момента:
1.8

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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