Tooling Intermédiaire

De Class.newInstance() à la réflexion sur les constructeurs

Remplacez Class.newInstance(), obsolète, par la recherche et l’invocation explicites du constructeur.

✕ Deprecated Class.newInstance()
Plugin plugin = pluginClass.newInstance();
✓ Constructor reflection
Plugin plugin = pluginClass
        .getDeclaredConstructor()
        .newInstance();
Un problème avec ce code ? Dites-le nous.

API prise en charge

Supprime l’utilisation de Class.newInstance(), qui est obsolète.

🎯

Constructeur explicite

La signature demandée est visible et peut accepter des arguments.

🛡

Échecs transparents

Les exceptions du constructeur sont représentées par InvocationTargetException.

Ancienne Approche
Class.newInstance()
Approche Moderne
Recherche explicite du constructeur
Depuis JDK
9
Difficulté
Intermédiaire
De Class.newInstance() à la réflexion sur les constructeurs
Disponible

Recommandé depuis que Class.newInstance() est devenue obsolète dans le JDK 9 (septembre 2017).

Class.newInstance() est obsolète, car cette méthode peut contourner la vérification à la compilation des exceptions levées par le constructeur et ne prend en charge qu’un constructeur sans argument. La recherche explicite du constructeur rend visible la signature choisie et signale les échecs d’invocation réflexive par les exceptions de réflexion appropriées. Les règles relatives aux modules et aux accès restent applicables ; ce modèle ne recommande pas de contourner l’encapsulation.