Obter metodo de uma classe... java.lang.reflect.Method

4 respostas
J

É possivel ultilizar java.lang.reflect.Method para obter por exemplo um metodo inteiro de uma classe?

Dada a classe abaixo:
package javaapplication1;

public class Main {

    public static void main(String[] args) {
        
      EscreveMensagem("Hello Word!!");
    }
    
    public static void EscreveMensagem(String msg)  {
       System.out.println(msg); 
    }
}

Gostaria de capturar o metodo inteiro como por exemplo, com uma string:

public static void EscreveMensagem(String msg) {
System.out.println(msg);
}

É possivel fazer isso com o uso de java.lang.reflect? se não qual seria outra alternativa?

4 Respostas

rod

você quer executar um método via reflection ou recuperar o código contido neste método?

J

o código contido no(s) método(s)

T

A resposta simples é “não” porque, durante o processo de compilação, o código não é incluído nos arquivos .class, que é o resultado da compilação.

Entretanto, se você ainda tiver os arquivos .java, pode (a partir da informação de depuração que é incluída nos arquivos .class) recuperar, com um pouco de trabalho, o fonte do método. A informação de depuração contém o número inicial da linha e o nome do arquivo .java.

J

Eu possuo os arquivos .java, na verdade gostaria de fazer isso dentro de um doclet, porém não encontrei uma maneira de saber o diretório dos arquivos de dentro da doclet, por exemplo dado o codigo abaixo como obter o caminho dos arquivos .java

package javaapplication1;

import com.sun.javadoc.*;

public class ListClass {
    public static boolean start(RootDoc root) {
        ClassDoc[] classes = root.classes();
        for (int i = 0; i < classes.length; ++i) {
            System.out.println(classes[i]);
        }
        return true;
    }
}
Criado 18 de janeiro de 2010
Ultima resposta 18 de jan. de 2010
Respostas 4
Participantes 3