Das immer zum Abschluss eines try-mit-Ressourcen-Blocks ein close() aufgerufen wird ist nicht ganz korrekt; es gibt nur dann ein Schließversuch, wenn die Ressource ungleich null ist.
Beispiel
Der Codebaustein compiliert und führt zu einer Konsolenausgabe.
try ( Scanner scanner1 = null; Scanner scanner2 = null ) {
System.out.println( "Ok" );
}
Bei Konstruktoren ist ein Objekt ja immer gegeben, aber es gibt auch Fabrikaufrufe, bei denen vielleicht null herauskommen kann, und für diese Fälle ist es ganz praktisch, dass try-mit-Ressourcen dann nichts macht, um eine NullPointerException beim close() zu vermeiden.
Ähnliche Beiträge
- null-Prüfungen mit eingebauter Ausnahmebehandlung
- Einmal Finalizer, vielleicht mehrmals die automatischen Speicherbereinigung
- Einmal Finalizier, vielleicht mehrmals der GC
- null-Prüfungen mit eingebauter Ausnahmebehandlung
- Nicht AutoCloseable-Typen in try-mit-Ressourcen mithilfe von Lambda-Ausdrücken bzw. Methoden-Referenzen nutzen