Membuat Persamaan akhir statik Java di Kotlin

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan membincangkan pemboleh ubah akhir statik di Java dan yang setara dengannya di Kotlin.

Di Jawa, menyatakan pemboleh ubah akhir statik membantu kita membuat pemalar . Dan di Kotlin, kami mempunyai beberapa cara untuk mencapai matlamat yang sama.

2. Di dalam objek

Pertama, mari kita lihat menyatakan pemalar dalam objek Kotlin :

object TestKotlinConstantObject { const val COMPILE_TIME_CONST = 10 val RUN_TIME_CONST: Int init { RUN_TIME_CONST = TestKotlinConstantObject.COMPILE_TIME_CONST + 20; } }

Dalam contoh di atas, kami menggunakan const val untuk menyatakan pemalar masa kompilasi, dan val untuk menyatakan pemalar masa larian.

Kami memanggilnya dalam kod Kotlin kami dengan cara yang sama seperti pemboleh ubah akhir statik Java :

@Test fun givenConstant_whenCompareWithActualValue_thenReturnTrue() { assertEquals(10, TestKotlinConstantObject.COMPILE_TIME_CONST) assertEquals(30, TestKotlinConstantObject.RUN_TIME_CONST) }

Namun, perhatikan bahawa kita tidak dapat menggunakan TestKotlinConstantObject.RUN_TIME_CONST dalam kod Java . Kata kunci val dengan sendirinya, tanpa kata kunci const , tidak mendedahkan bidang Kotlin sebagai umum untuk panggilan kelas Java .

Itulah sebab mengapa kami mempunyai @JvmField untuk mendedahkan pemboleh ubah val untuk membuat pemboleh ubah akhir statik yang mesra Java :

@JvmField val JAVA_STATIC_FINAL_FIELD = 20

Kita boleh memanggilnya sama seperti variabel const val di kedua-dua kelas Kotlin dan Java :

assertEquals(20, TestKotlinConstantObject.JAVA_STATIC_FINAL_FIELD)

Selain itu, kami juga memiliki @JvmStatic, yang dapat kami gunakan dengan cara yang serupa dengan @JvmField. Tetapi kami tidak menggunakannya di sini kerana @JvmStatic menjadikan aksesori harta tanah statik di Java tetapi bukan pemboleh ubah itu sendiri.

3. Di dalam kelas Kotlin

Pengisytiharan pemalar ini serupa dalam kelas Kotlin , tetapi di dalam objek pendampingnya:

class TestKotlinConstantClass { companion object { const val COMPANION_OBJECT_NUMBER = 40 } }

Dan kita boleh melakukan perkara yang sama seperti sebelumnya:

assertEquals(40, TestKotlinConstantClass.COMPANION_OBJECT_NUMBER)

5. Kesimpulan

Dalam artikel ini, kami telah menggunakan penggunaan const , val , dan @JvmField di Kotlin untuk membuat pemboleh ubah akhir yang statik.

Seperti biasa, kodnya boleh didapati di GitHub.