Was ist der beste Weg, log TAG Konstante in Kotlin zu definieren?

13

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:

%Vor%

Ich weiß, dass ich in Kotlin-Klassen TAG auf diese Weise erstellen kann:

%Vor%

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?

    
Mario Kutlev 23.08.2017, 13:25
quelle

8 Antworten

10

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%     
Gabriele Mariotti 23.08.2017, 13:52
quelle
1

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.

    
jpihl 09.01.2018 14:39
quelle
1

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.

    
Fredy Mederos 09.01.2018 18:23
quelle
0

Ich erstelle die Konstante als Begleitobjekt:

%Vor%

Dann kann ich es so verwenden:

%Vor%     
Matias Elorriaga 23.08.2017 13:50
quelle
0

Deklarieren Sie die Variable TAG mit val

%Vor%

Verwenden Sie die Variable wie

%Vor%     
user4696837 23.08.2017 14:15
quelle
0

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.

    
Mario Kutlev 18.01.2018 13:17
quelle
0

Sie können Ihre TAG by @JvmField wie folgt definieren:

%Vor%

Weitere Einzelheiten finden Sie in diesem Artikel: Kotlins versteckte Kosten

    
Andrew Wang 07.02.2018 07:43
quelle
0

Aktualisierte Antwort mit Kotlin 1.2.20

%Vor%

verwendet

%Vor%     
Kasim Rangwala 07.02.2018 09:33
quelle

Tags und Links