¿Qué usar en lugar de Class.newInstance ()?

87

Class.newInstance()está marcado como obsoleto. La documentación no sugiere ninguna alternativa. ¿Cómo vamos a crear instancias ahora?

Dmitri Nesteruk
fuente
5
¿Qué documentación?
Sotirios Delimanolis

Respuestas:

110

Para citar el javadoc de Java 9 :

La llamada

clazz.newInstance()

puede ser reemplazado por

clazz.getDeclaredConstructor().newInstance()

Mureinik
fuente
3
¿Qué pasa con Java 8 ?. No puedo encontrar el método getDeclaredConstructor () sin parámetros allí.
Yurii Kozachok
1
@YuriiKozachok Puede usar getConstrouctor, aunque tenga en cuenta que solo devolverá constructores públicos . Además, tenga en cuenta que newInstanceno está obsoleto en Java 8 (aunque su uso todavía tiene todos los problemas que hicieron que los desarrolladores de JDK lo desaprobaran en 9 ...)
Mureinik