Alguém saberia como instanciar uma classe interna via reflection?
// Sem problemas aqui.
final Class classe = Class
.forName("br.com.empresa.ClasseExterna$ClasseInterna");
/*
* Aqui ele me lança uma Exception in thread "main"
* java.lang.InstantiationException:
* br.com.empresa.ClasseExterna$ClasseInterna at
* java.lang.Class.newInstance0(Unknown Source) at
* java.lang.Class.newInstance(Unknown Source)
*/
final ClasseInterna teste01 = (ClasseInterna) classe.newInstance();
Coloque o código da sua classe ClasseExterna e ClasseInterna.
Jà adianto que isso pode ocorrer:
-
Se a classe interna não estiver como static
-
Se ocorrer alguma das condições descritas no javadoc para essa exception (tem muita coisa pra repetir aqui, dá uma lida)
Pgioseffi,
Dá uma olhada neste link:
http://www.jroller.com/tomdz/entry/reflection_inner_classes
Fiz um teste para confirmar e aparentemente tudo certo:
[code]public class Externa {
public static void main(String[] args) {
try {
Externa extObj = new Externa();
Constructor constructor = Externa.Interna.class.getConstructor(new Class[]{Externa.class});
Externa.Interna intObj = (Externa.Interna)constructor.newInstance(new Object[] {extObj});
} catch (Exception e) {
// ...
}
}
public class Interna {
// ...
}
}[/code]