Salah satu kekuatan utama Kotlin adalah interoperabilitas penuh dengan Java. Section ini menjelaskan aturan main saat dua bahasa berinteraksi.

# Calling Java from Kotlin

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 Java

Pelajari bagaimana top-level function Kotlin menjadi static method FileNameKt di Java, peran @JvmStatic untuk companion object, dan @JvmOverloads untuk default argumen.

Buka →
# Platform Types

Pelajari 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 Annotations

Pelajari 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 Properties

Pelajari translasi dua arah antara getter/setter Java (getXxx/setXxx) dan properti Kotlin (val/var), termasuk konvensi isXxx untuk Boolean.

Buka →
# Checked Exceptions Interoperability

Pelajari bagaimana Kotlin mengabaikan deklarasi throws Java untuk checked exception, tetap dapat menangkapnya dengan try-catch, dan menggunakan @Throws untuk kompatibilitas Java.

Buka →
# Static Interop

Pelajari 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 @JvmStatic

Pelajari perbedaan @JvmField yang menghasilkan field public langsung tanpa getter, dan @JvmStatic yang menghasilkan static method sejati pada companion object dan object singleton.

Buka →
# @JvmOverloads

Pelajari cara @JvmOverloads menghasilkan beberapa overload Java untuk default argumen Kotlin pada function, constructor, dan method instance, beserta aturan jumlah overload yang dihasilkan.

Buka →
# @JvmName

Pelajari @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 Interoperability

Pelajari 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 Practices

Ringkasan praktik terbaik interoperabilitas Kotlin-Java: anotasi, @JvmStatic, @JvmOverloads, @JvmField, @Throws, dan salinan defensif.

Buka →