Reflection

6 respostas
H

Olã,
Pessoal, usando reflection eu posso invcocar um método da própria classe sem precisar criar uma instância dela ?
algo parecido com:

Method.invoke([b]this[/b],args) ?

Abraços

6 Respostas

B

Olá hrober, acho eu que não, só se este método que vc for chamar seja static.

A

“hrober”:
Olã,
Pessoal, usando reflection eu posso invcocar um método da própria classe sem precisar criar uma instância dela ?
algo parecido com:

Method.invoke([b]this[/b],args) ?

Abraços

não.
Você consegue invocar métodos fornecendo apenas o nome, mas de qlqr forma vc precisa de uma instância do obj.

dê uma olhada aki

H

Obrigado por responderem :-), uma dúvida:
[*] Como eu posso invocar o método statico ?

abraços

B

Olá, vc tento o class da classe (Classes.class) vc faz um Method getMethod(String name, Class[] parameterTypes) pra pega o method que vc quer, dai é só invoca-lo.

F

como o pessoal ja respondeu, tu precisa de uma instancia (a nao ser q seja estatico)
da uma olhada no codigo abaixo…

import java.lang.reflect.Method;

public class Reflection {

    public Reflection() {
        try {
            Method m = this.getClass().getMethod("method", null);
            m.invoke(this, null);
            
            m = this.getClass().getMethod("methodStatic", null);
            m.invoke(null, null);
        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }
    
    public void method() {
        System.out.println("Hello");
    }
    
    public static void methodStatic() {
        System.out.println("Hello Static");
    }
        
    public static void main(String[] args) {
        new Reflection();
    }
}
F

como o pessoal ja respondeu, tu precisa de uma instancia (a nao ser q seja estatico)
da uma olhada no codigo abaixo…

import java.lang.reflect.Method;

public class Reflection {

    public Reflection() {
        try {
            Method m = this.getClass().getMethod("method", null);
            m.invoke(this, null);
            
            m = this.getClass().getMethod("methodStatic", null);
            m.invoke(null, null);
        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }
    
    public void method() {
        System.out.println("Hello");
    }
    
    public static void methodStatic() {
        System.out.println("Hello Static");
    }
        
    public static void main(String[] args) {
        new Reflection();
    }
}
Criado 28 de março de 2005
Ultima resposta 29 de mar. de 2005
Respostas 6
Participantes 4