Wie implementiere finalize () in kotlin?

8

Heute implementiere ich ein Closeable in kotlin, und wie ich es in Java in der Vergangenheit getan habe, möchte ich ein finalize() als letztes Ausweichsystem implementieren, falls der Client-Code vergisst, das Rendering zu beenden kritische Ressource wurde nicht zurückgewonnen. Ich betrachte diese Ressource als kritisch genug, um diesen Fallback hinzuzufügen, trotz der Unzuverlässigkeit dieses Fallbacks. % Co_de% deklariert jedoch keine kotlin.Any -Methode, was bedeutet, dass ich dies nicht einfach tun kann:

%Vor%

Das ist nicht gut, zumindest nicht so gut, wie es sein sollte. Jetzt kehre ich zur Umgehung auf Java zurück. Weiß jemand, wie man das in reinem Kotlin macht?

PS: Meine aktuelle Problemumgehung:

FinalizedCloseable.java:

%Vor%

Kotlin:

%Vor%

Aber diese Problemumgehung erfordert eine Oberklasse. Wenn mein anderes finalize das nächste Mal bereits eine Superklasse hat, wird diese Problemumgehung nicht ohne eine Menge Boilerplate funktionieren.

BEARBEITEN: Jetzt weiß ich, wie man finalize () implementiert, aber IDEA kotlin plugin ist nicht schlau genug, um zu wissen, dass dies ein Finalizer ist, und markiert ihn daher mit einer Warnung. Nachdem ich eine Weile gekämpft habe, habe ich herausgefunden, wie ich diese Warnungen unterdrücken kann, und ich möchte sie teilen:

%Vor%     
glee8e 04.05.2017, 13:24
quelle

1 Antwort

12

Die offizielle Dokumentation deckt dies ab.

  

Um finalize () zu überschreiben, müssen Sie es einfach deklarieren, ohne das Schlüsselwort override zu verwenden:

%Vor%     
zsmb13 04.05.2017, 13:27
quelle

Tags und Links