Dois caminhos:
Método 1 - apenas para classes com um construtor sem arg
Se sua classe tiver um construtor sem arg, você pode obter um Class
objeto usando Class.forName()
e usar o newInstance()
método para criar uma instância (embora esteja ciente de que esse método é freqüentemente considerado mal porque pode derrotar as exceções verificadas do Java).
Por exemplo:
Class<?> clazz = Class.forName("java.util.Date");
Object date = clazz.newInstance();
Método 2
Uma abordagem alternativa mais segura que também funciona se a classe não tiver nenhum construtor sem arg é consultar seu objeto de classe para obter seu Constructor
objeto e chamar um newInstance()
método neste objeto:
Class<?> clazz = Class.forName("com.foo.MyClass");
Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class);
Object instance = constructor.newInstance("stringparam", 42);
Ambos os métodos são conhecidos como reflexão . Normalmente, você terá que capturar as várias exceções que podem ocorrer, incluindo coisas como:
- a JVM não consegue encontrar ou carregar sua classe
- a classe que você está tentando instanciar não tem o tipo certo de construtores
- o próprio construtor lançou uma exceção
- o construtor que você está tentando invocar não é público
- um gerenciador de segurança foi instalado e está evitando que ocorra reflexão