Tooling Fortgeschritten

Class.newInstance() durch Konstruktorreflexion ersetzen

Das veraltete Class.newInstance() durch explizite Konstruktorsuche und -aufruf ersetzen.

✕ Deprecated Class.newInstance()
Plugin plugin = pluginClass.newInstance();
✓ Constructor reflection
Plugin plugin = pluginClass
        .getDeclaredConstructor()
        .newInstance();
Problem mit diesem Code entdeckt? Sag uns Bescheid.
✅

Unterstützte API

Vermeidet das veraltete Class.newInstance().

🎯

Expliziter Konstruktor

Die gewünschte Signatur ist sichtbar und kann Argumente annehmen.

🛡

Ehrliche Fehler

Konstruktorausnahmen werden durch InvocationTargetException dargestellt.

Alter Ansatz
Class.newInstance()
Moderner Ansatz
Explizite Konstruktorsuche
Seit JDK
9
Schwierigkeitsgrad
Fortgeschritten
Class.newInstance() durch Konstruktorreflexion ersetzen
Verfügbar

Empfohlen, seit Class.newInstance() in JDK 9 (September 2017) als veraltet markiert wurde.

Class.newInstance() ist veraltet, weil es die Prüfung der vom Konstruktor ausgelösten Ausnahmen zur Kompilierzeit umgehen kann und nur parameterlose Konstruktoren unterstützt. Die explizite Konstruktorsuche macht die gewählte Signatur sichtbar und meldet Fehler beim reflektiven Aufruf über die passenden Reflexionsausnahmen. Modul- und Zugriffsregeln gelten weiterhin; dieses Muster empfiehlt nicht, die Kapselung zu umgehen.