Mecanismo de reflexão de Java
O mecanismo de reflexão Java está no estado de corrida O método é chamado de mecanismo de reflexão da língua Java.
O mecanismo de reflexão Java fornece principalmente as seguintes funções: Determine a classe para a qual qualquer objeto pertence ao tempo de execução; um objeto; gera um proxy dinâmico.
1. Obtenha as propriedades de um objeto
A cópia do código é a seguinte:
Public Object getProperty (proprietário do objeto, string fieldname) lança exceção {
Classe OwnerClass = dono.getClass ();
Campo de campo = ownerclass.getfield (fieldname);
Propriedade do objeto = field.get (proprietário);
propriedade de retorno;
}
Classe OwnerClass = dono.getClass (): obtenha a classe deste objeto.
Campo Campo = OwnClass.getfield (FieldName): Obtenha o atributo declarado pela classe através da classe.
Propriedade do Object = Field.get (Proprietário): Obtenha uma instância dessa propriedade através do objeto.
2. Obtenha as propriedades estáticas de uma determinada classe
A cópia do código é a seguinte:
Public Object GetStaticProperty (String ClassName, String FieldName)
joga exceção {
Class OwnClass = Class.ForName (ClassName);
Campo de campo = ownerclass.getfield (fieldname);
Propriedade do objeto = Field.get (OwnClass);
propriedade de retorno;
}
Class OwnClass = Class.ForName (ClassName): primeiro obtenha a classe desta classe.
Campo Campo = OwnClass.getfield (FieldName): Como acima, obtenha os atributos declarados pela classe através da classe.
Objeto Property = Field.get (OwnClass): Isso é um pouco diferente do que acima, porque a propriedade é estática, por isso é retirada diretamente da classe da classe.
3. Métodos para executar um objeto
A cópia do código é a seguinte:
Public Object Invokemethod (Proprietário do objeto, String MethodName, Object [] args) lança Exceção {
Classe OwnerClass = PROUST.GETCLASS ();
Classe [] argsclass = nova classe [args.length];
for (int i = 0, j = args.length; i <j; i ++) {
argsclass [i] = args [i] .getclass ();
}
Método Método = Ownerclass.getMethod (MethodName, argSclass);
retorno método.invoke (proprietário, args);
}
Classe downs_class = dono.getclass (): Antes de tudo, você deve obter a classe desse objeto.
Linhas 5 a 9: Configure a matriz de classes de parâmetros como uma condição para encontrar o método.
Método Método = OwnClass.GetMethod (MethodName, ArgSclass): Obtenha o método a ser executado pelo MethodName e pela ArgSclass (o tipo de tipo de parâmetro definido no método).
Method.inVoke (Proprietário, Args): Os parâmetros que executam o método. . O valor de retorno é objeto, que também é o valor de retorno do método.
4. Execute um método estático de uma determinada classe
A cópia do código é a seguinte:
Public Object InvoKestaticMethod (String ClassName, String MethodName,
Objeto [] args) lança exceção {
Class OwnClass = Class.ForName (ClassName);
Classe [] argsclass = nova classe [args.length];
for (int i = 0, j = args.length; i <j; i ++) {
argsclass [i] = args [i] .getclass ();
}
Método Método = Ownerclass.getMethod (MethodName, argSclass);
Método de retorno.invoke (null, args);
}
O princípio básico é o mesmo que o Exemplo 3, a diferença é a última linha.
5. Crie uma nova instância
A cópia do código é a seguinte:
Public Object NewInstance (String ClassName, Object [] args) lança exceção {
Classe newoneClass = classe.ForName (ClassName);
Classe [] argsclass = nova classe [args.length];
for (int i = 0, j = args.length; i <j; i ++) {
argsclass [i] = args [i] .getclass ();
}
Constructor Cons = newoneClass.getConstructor (argsclass);
return conts.newInstance (args);
}
O método mencionado aqui é executar um construtor com parâmetros para criar uma nova instância. Se não forem necessários parâmetros, você poderá usar diretamente newoneclass.newinstance () para implementá -lo.
Classe newoneClass = Class.ForName (ClassName): A primeira etapa é fazer com que a classe da instância seja construída.
Linhas 5 a 9: Obtenha a matriz de classes de parâmetros.
Constructor Cons = newoneClass.getConstructor (argsclass): obtenha o construtor.
Cons.NewInstance (args): Crie uma nova instância.
6. Determine se é uma instância de uma determinada classe
A cópia do código é a seguinte:
public boolean isinstance (objeto obj, classe cls) {
retornar cls.isinstance (obj);
}
7. Obtenha um elemento na matriz
A cópia do código é a seguinte:
Public Object GetByArray (Array de Objeto, Int Index) {
return Array.get (Array, índice);
}