Avatar ·

Warum und wann sollte man @JvmStatic in Kotlin companion-Objekten verwenden?

Hallo zusammen! Ich habe angefangen, Kotlin zu lernen und schreibe ein altes Java-Projekt um. Dabei bin ich auf eine unklare Situation mit companion-Objekten gestoßen. Ich habe diesen Kotlin-Code: ```kotlin class MyUtils { companion object { fun formatDate(date: Date): String { // Datumsformatierung return SimpleDateFormat("yyyy-MM-dd", Locale.US).format(date) } const val MAX_COUNT = 100 } } ``` Aus Java-Code heraus versuche ich, diese Methode so aufzurufen: ```java String formatted = MyUtils.formatDate(new Date()); ``` Aber der Compiler gibt einen Fehler aus! Ich muss `MyUtils.Companion.formatDate(...)` schreiben, was schrecklich aussieht. Ich habe über die Annotation `@JvmStatic` gelesen, verstehe aber nicht ganz: 1. Warum verhält sich Kotlin so? In Java konnte ich einfach einen statischen Aufruf tätigen.