Da Class.newInstance() alla reflection sul costruttore
Sostituisci Class.newInstance(), deprecato, con la ricerca e l’invocazione esplicite del costruttore.
Plugin plugin = pluginClass.newInstance();
Plugin plugin = pluginClass
.getDeclaredConstructor()
.newInstance();
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.
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.