Acessando classe pelo nome

3 classes são necessárias:

 

Interface

 

public interface ITeste {

        public void test();

        public String toString();

 

}

 

Classe que será criada atraves de um string

 

class Teste implements ITeste {

        public Teste() {

                System.out.println("criou o objeto");

        }

        public void test() {

                System.out.println("testou o objeto");

        }

        public String toString() {

                return "esse eh o toString";

        }

 

}

Acessar via string (usando a interface)

 

class TestePrincipal {

 

        public static void main(String args[]) {

            try {

                        // associa a forName a um Class

                        Class c = Class.forName("Teste");

                        // instancia através da interface

            ITeste tb = (ITeste) c.newInstance();

            // chama os métodos da class

                        tb.test();

                        System.out.println(tb);

            } catch (ClassNotFoundException e) {

                        System.out.println("Classe nao encontrada:" + e);

            } catch (InstantiationException e) {

                        System.out.println("Erro ao instanciar:" + e);

            } catch (IllegalAccessException e) {

                        System.out.println("Acesso ilegal:" + e);

            }

    }