Pessoal estou estudando reflexão e me surgiu uma duvida na parte de criação de objetos dinamicamente, quando eu tenho uma classe que herda de outra, eu recebo uma exceção, agora se eu não herda a mesma classe eu consigo criar um objeto.
Alguem sabe o que pode ser?
a sua classe modelo.Matematica possui o construtor padrão (sem argumentos)? Para instanciar dessa forma (usando newInstance) é necessária a existência desse construtor e que ele esteja acessível (dá para burlar a parte de acessibilidade, mas precisa de um pouquinho mais de código).
M
mcbrain
Se a classe não possuir o construtor noargs, ou tiver N outros construtores, você pode obter os construtores e usar o método newInstance do construtor. Desta forma você pode passar os argumentos que você precisa. Digamos que sua classe (br.com.MinhaClasse, por exemplo) tenha vários construtores declarados, e você queira invocar um específico que receba uma apenas String como argumento:
Obviamente, se houver outros construtores cujo 1o argumento seja uma String, você deve adequar a lógica para evitar confusão.
Edit: ops, esqueci do casting para MinhaClasse.
Edit2: Este tipo de construção também vai fazer muito mais sentido se você estiver usando polimorfismo e fizer o casting para uma superclasse… enfim, deu pra entender como funciona?