Salah satu kekuatan utama Kotlin adalah interoperabilitas penuh dengan Java. Section ini menjelaskan aturan main saat dua bahasa berinteraksi.
Pelajari cara Kotlin memanggil kelas Java langsung tanpa new, memakai static method Java, dan memanfaatkan getter/setter Java sebagai properti Kotlin.
Buka → # Calling Kotlin from JavaPelajari bagaimana top-level function Kotlin menjadi static method FileNameKt di Java, peran @JvmStatic untuk companion object, dan @JvmOverloads untuk default argumen.
Buka → # Platform TypesPelajari konsep platform types T! yang muncul saat Kotlin memakai tipe dari Java tanpa anotasi nullability, dan cara mitigasinya dengan deklarasi tipe eksplisit nullable.
Buka → # Nullability AnnotationsPelajari bagaimana Kotlin membaca anotasi @Nullable, @NotNull, dan JSR-305 dari kode Java untuk menentukan tipe non-nullable atau nullable secara akurat.
Buka → # Java Properties dan Kotlin PropertiesPelajari translasi dua arah antara getter/setter Java (getXxx/setXxx) dan properti Kotlin (val/var), termasuk konvensi isXxx untuk Boolean.
Buka → # Checked Exceptions InteroperabilityPelajari bagaimana Kotlin mengabaikan deklarasi throws Java untuk checked exception, tetap dapat menangkapnya dengan try-catch, dan menggunakan @Throws untuk kompatibilitas Java.
Buka → # Static InteropPelajari companion object sebagai padanan static di Kotlin, @JvmStatic untuk static method sejati yang dapat dipanggil langsung dari Java, dan @JvmField untuk static field.
Buka → # @JvmField dan @JvmStaticPelajari perbedaan @JvmField yang menghasilkan field public langsung tanpa getter, dan @JvmStatic yang menghasilkan static method sejati pada companion object dan object singleton.
Buka → # @JvmOverloadsPelajari cara @JvmOverloads menghasilkan beberapa overload Java untuk default argumen Kotlin pada function, constructor, dan method instance, beserta aturan jumlah overload yang dihasilkan.
Buka → # @JvmNamePelajari @JvmName untuk mengubah nama method di bytecode Java, @file:JvmName untuk mengubah nama file class, dan disambiguasi type erasure pada List<String> vs List<Int>.
Buka → # Java Collections InteroperabilityPelajari bagaimana List, MutableList, dan Map Kotlin berinteraksi dengan java.util.List dan java.util.ArrayList, termasuk konversi eksplisit dan jebakan platform type pada elemen.
Buka → # Interoperability Best PracticesRingkasan praktik terbaik interoperabilitas Kotlin-Java: anotasi, @JvmStatic, @JvmOverloads, @JvmField, @Throws, dan salinan defensif.
Buka →