Was anstelle von Class.newInstance () verwenden?

79

Class.newInstance()ist als veraltet markiert. Die Dokumentation schlägt keine Alternativen vor. Wie sollen wir jetzt Instanzen erstellen?

Dmitri Nesteruk
quelle
5
Welche Dokumentation?
Sotirios Delimanolis

Antworten:

98

So zitieren Sie das Javadoc von Java 9 :

Der Anruf

clazz.newInstance()

kann ersetzt werden durch

clazz.getDeclaredConstructor().newInstance()

Mureinik
quelle
3
Was ist mit Java 8?. Ich kann die Methode getDeclaredConstructor () ohne Parameter dort nicht finden.
Yurii Kozachok
1
@YuriiKozachok Sie können verwenden getConstrouctor, beachten Sie jedoch, dass nur öffentliche Konstruktoren zurückgegeben werden. Beachten Sie auch, dass newInstancedies in Java 8 nicht veraltet ist (obwohl die Verwendung immer noch alle Probleme aufweist, die die JDK-Entwickler dazu veranlasst haben, es in 9 zu
verwerfen