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 и используемых в соответствии с условиями, описанными в разделе "".