En el articulo de hoy vamos a ver algo muy sencillo de Reflection. Reflection es una tecnica de Java que se utiliza para instanciar clases y llamar a metodos dinamicamente en runtime. Generalmente se utiliza para tener un punto de entrada en comun en donde no sabemos que cosa ejecutar. Utilizando reflection podemos resolver problemas los cuales seria imposible hacerlo usando las APIs comunes de Java.

Analisis

Reflection tiene 3 cosas las cuales no son tan positivas.

  • Baja performance

Naturalmenete llamar a un metodo de una clase directamente es mucho mas performante que hacerlo con una API sobre esto.

  • Restricciones en permisos

Security Restrictions
Si se esta utilizando un security manager es probable que Reflection no funcione adecuadamente ya que mediante esta API podemos acceder a metodos y variables privadas de una clase.

  • Exposicion de metodos y variables internas

Como nombrabamos anteriormente a traves de reflection se puede ingresar a variables privadas lo cual puede ser ventajoso pero finalmente es un agujero de seguridad.

El codigo

Hoy vamos a ver en esta primera entrega como se puede instanciar una clase via reflection muy sencillamente.

String className = "com.my.Person";
Person person = (Person)Class.forName(className).newInstance();
person.doSomething();

De esta manera con el nombre de una clase podemos obtener una instancia de Person emulando este codigo.

Person person = new Person();

Obviamente la segunda parte es mucho mas sencilla, pero lo bueno de esto es que podemos empezar a jugar con interfaces y asi olvidarnos de que clase estamos instanciando.

En la proxima entrega vamos a ver como llamar metodos y ver valores de variables privadas.