Ich erstelle meine ersten Kotlin-Klassen in meiner Android-Anwendung. Normalerweise habe ich für Logging-Zwecke eine Konstante mit dem Namen TAG
. Was ich in Java tun würde, ist:
Ich weiß, dass ich in Kotlin-Klassen TAG
auf diese Weise erstellen kann:
Das ist in Ordnung für Projekte, die Java und Kotlin verwenden, aber was ist, wenn ich ein neues Projekt starte, das nur in Kotlin ist? Wie definiere ich da TAG
konstant? Gibt es mehr Kotlin Weg, wo ich diese seltsame Konstruktion class.java.simpleName
nicht habe?
Im Allgemeinen sind Konstanten alle Großbuchstaben (zB FOO) und befinden sich im Begleitobjekt :
%Vor%und um das Feld TAG zu definieren, das Sie verwenden können:
%Vor%Ich habe einen Weg gefunden, der mehr "copy-paste" -fähig ist, da Sie nicht den Namen Ihrer Klasse eingeben müssen:
%Vor%Es ist nicht die eleganteste Lösung, aber es funktioniert.
this::class.toString().split(".").last()
gibt dir "com.stackoverflow.mypackage.MyClass$Companion"
, also brauchst du dropLast(10)
, um $Companion
zu entfernen.
Alternativ können Sie dies tun:
%Vor% Aber dann ist die Membervariable TAG
nicht mehr "statisch" und folgt nicht den empfohlenen Namenskonventionen.
AnkoLogger verwendet eine Schnittstelle, um das Protokoll-Tag zu definieren.
%Vor%Sie können es wie folgt verwenden:
%Vor%Vielleicht kann AnkoLogger Ihnen einige Ideen geben, um ein benutzerdefiniertes Protokollierungswerkzeug zu implementieren.
Ich erstelle die Konstante als Begleitobjekt:
%Vor%Dann kann ich es so verwenden:
%Vor% Deklarieren Sie die Variable TAG mit val
Verwenden Sie die Variable wie
%Vor%Mit der Idee von Jpihls Antwort habe ich ein Extension-Feld für das Log-Tag erstellt.
Hier ist der Auszug:
%Vor%Wenn ich TAG Konstante in einer Klasse erstellen muss, mache ich das:
%Vor%Das Gute ist, dass Sie das einfach kopieren und einfügen können und es wird für jede Klasse funktionieren.
Sie können Ihre TAG
by @JvmField
wie folgt definieren:
Weitere Einzelheiten finden Sie in diesem Artikel: Kotlins versteckte Kosten
Aktualisierte Antwort mit Kotlin 1.2.20
verwendet
%Vor%