Reflection

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

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

[quote=“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[/quote]

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

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

abraços

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.

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();
    }
}

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();
    }
}