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.