Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/01/2009, 11:40
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 17 años
Puntos: 260
Sonrisa Respuesta: Esto se puede hacer...

Hola,

En su forma mas básica sería algo así:

Código:
import java.lang.reflect.*;

public class Proc {

  public enum Procs { A, B }
  
  private void invoke(Procs p) {
    try {
      Class c = Class.forName("Proc");
      Object t = c.newInstance();
      Method m = c.getDeclaredMethod(p.name());
      m.setAccessible(true);
      m.invoke(t);
    } catch (Exception e) {
      System.err.println(e);
    }
  }
  
  private void A() {
    System.out.println("Function A");
  }
  
  private void B() {
    System.out.println("Function B");
  }
  
  public static void main(String[] args) {
    Proc p = new Proc();
      p.invoke(Procs.A);
  }
  
}
http://java.sun.com/docs/books/tutor...ect/index.html
http://java.sun.com/javase/6/docs/ap...e-summary.html

En mi opinión personal, Reflection se usa cuando no hay otra forma de conocer los métodos existentes de una clase, por ejemplo, cuando se crea un programa que se puede extender por medio de plug-ins (Java Beans), pero en la mayoría de los casos es preferible evitarlo y usar programación estándard.

Saludos,

Última edición por HackmanC; 26/01/2009 a las 11:43 Razón: beans