Язык

Field.Set(Object, Object) Метод

Определение

Задает поле, представленное этим Field объектом в указанном аргументе объекта, заданным новым значением.

[Android.Runtime.Register("set", "(Ljava/lang/Object;Ljava/lang/Object;)V", "")]
public void Set(Java.Lang.Object? obj, Java.Lang.Object? value);
[<Android.Runtime.Register("set", "(Ljava/lang/Object;Ljava/lang/Object;)V", "")>]
member this.Set : Java.Lang.Object * Java.Lang.Object -> unit

Параметры

obj
Object

объект, поле которого должно быть изменено

value
Object

новое значение для поля obj изменения

Атрибуты

Исключения

Значение , если объект является null нестатичным

Значение

Значение , если это поле недоступно

Комментарии

Задает поле, представленное этим Field объектом в указанном аргументе объекта, заданным новым значением. Новое значение автоматически раскроется, если базовое поле имеет примитивный тип.

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

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

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

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

Если базовое поле является окончательным, этот Field объект имеет <доступ em write>/em<>, если и только если выполняются следующие условия: <ul><li>#setAccessible(boolean) setAccessible(true) успешно выполнен для этого Field объекта;</li><li>поле является нестатичным; и< /li><ли>декларируемый класс поля не является классом< записи Class#isRecord()./li></ul>, если какие-либо из указанных выше проверок не выполнены, этот метод вызывает исключениеIllegalAccessException.

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

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

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

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

Поле имеет значение, возможно, распакованное и расширенное новое значение.

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

Java документации по java.lang.reflect.Field.set(java.lang.Object, java.lang.Object).

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Применяется к