Field.Set(Object, Object) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Define o campo representado por esse Field objeto no argumento de objeto especificado como o novo valor especificado.
[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
Parâmetros
- obj
- Object
o objeto cujo campo deve ser modificado
- value
- Object
o novo valor para o campo de obj modificação
- Atributos
Exceções
se o objeto for null e o campo não for estático
se o objeto não for compatível com a classe de declaração
se este campo não estiver acessível
Comentários
Define o campo representado por esse Field objeto no argumento de objeto especificado como o novo valor especificado. O novo valor será desembrulhado automaticamente se o campo subjacente tiver um tipo primitivo.
A operação prossegue da seguinte maneira:
Se o campo subjacente for estático, o obj argumento será ignorado; ele poderá ser nulo.
Caso contrário, o campo subjacente é um campo de instância. Se o argumento de objeto especificado for nulo, o método gerará um NullPointerException. Se o argumento de objeto especificado não for uma instância da classe ou interface declarando o campo subjacente, o método gerará um IllegalArgumentException.
Se esse Field objeto estiver impondo Java controle de acesso à linguagem e o campo subjacente estiver inacessível, o método gerará um IllegalAccessException.
Se o campo subjacente for final, esse Field objeto terá <acesso em>write</em> se e somente se as seguintes condições forem atendidas: <ul><li>#setAccessible(boolean) setAccessible(true) foi bem-sucedido para este Field objeto;</li><li>o campo não é estático; e</li li><>a classe de declaração do campo não é uma classe de registro Class#isRecord().</li></ul> Se qualquer uma das verificações acima não for atendida, esse método gerará um IllegalAccessException.
Definir um campo final dessa forma é significativo somente durante a desserialização ou reconstrução de instâncias de classes com campos finais em branco, antes de serem disponibilizados para acesso por outras partes de um programa. O uso em qualquer outro contexto pode ter efeitos imprevisíveis, incluindo casos em que outras partes de um programa continuam a usar o valor original desse campo.
Se o campo subjacente for de um tipo primitivo, uma conversão de desembrulhamento tentará converter o novo valor em um valor de um tipo primitivo. Se essa tentativa falhar, o método gerará um IllegalArgumentException.
Se, após possível desembrulhamento, o novo valor não puder ser convertido no tipo do campo subjacente por uma identidade ou conversão de ampliação, o método gerará um IllegalArgumentException.
Se o campo subjacente for estático, a classe que declarou o campo será inicializada se ainda não tiver sido inicializada.
O campo é definido como o novo valor possivelmente desembrulhado e ampliado.
Se o campo estiver oculto no tipo de obj, o valor do campo será definido de acordo com as regras anteriores.
Java documentação para java.lang.reflect.Field.set(java.lang.Object, java.lang.Object).
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.