Tooling Intermedio

Da Class.newInstance() alla reflection sul costruttore

Sostituisci Class.newInstance(), deprecato, con la ricerca e l’invocazione esplicite del costruttore.

✕ Deprecated Class.newInstance()
Plugin plugin = pluginClass.newInstance();
✓ Constructor reflection
Plugin plugin = pluginClass
        .getDeclaredConstructor()
        .newInstance();
Vedi un problema con questo codice? Faccelo sapere.
✅

API supportata

Elimina l’uso di Class.newInstance(), che è deprecato.

🎯

Costruttore esplicito

La firma richiesta è visibile e può accettare argomenti.

🛡

Errori trasparenti

Le eccezioni del costruttore sono rappresentate da InvocationTargetException.

Approccio Vecchio
Class.newInstance()
Approccio Moderno
Ricerca esplicita del costruttore
Dal JDK
9
Difficoltà
Intermedio
Da Class.newInstance() alla reflection sul costruttore
Disponibile

Consigliato da quando Class.newInstance() è stato deprecato nel JDK 9 (settembre 2017).

Class.newInstance() è deprecato perché può aggirare il controllo in fase di compilazione delle eccezioni generate dal costruttore e supporta solo un costruttore senza argomenti. La ricerca esplicita del costruttore rende visibile la firma selezionata e segnala gli errori dell’invocazione riflessiva mediante le eccezioni di reflection appropriate. Le regole di accesso e dei moduli restano valide; questo pattern non consiglia di aggirare l’incapsulamento.