Sobes.tech
Middle

Чӣ гуна танзим кардани ҳамгироии Kotlin бо лоиҳаҳои Java?

sobes.tech AI

Ҷавоб аз AI

Барои ҳамгироии Kotlin бо лоиҳаи Java-и мавҷуда зарур аст:

  1. Илова кардани вобастагиҳо барои Kotlin дар лоиҳа: Дар асоси системаи сохтани (Gradle, Maven), плугин ва китобхонаи стандартии Kotlin-ро илова кунед.

    Мисол барои Gradle (дар build.gradle модул):

    plugins {
        id 'org.jetbrains.kotlin.jvm' version '<версияи охирини Kotlin>'
    }
    
    sourceSets {
        main {
            kotlin {
                srcDirs 'src/main/kotlin' // Илова кардани директория барои манбаъҳои Kotlin
            }
        }
    }
    
    dependencies {
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:<версияи охирини Kotlin>"
        // Вобастагиҳои дигар
    }
    
  2. Танзим кардани директорияҳои манбаъ: Созда кардани директория барои файлҳои Kotlin, масалан, src/main/kotlin, дар канори src/main/java. Системаи сохтани бояд барои ҷустуҷӯи манбаъҳо дар ҳар ду директория танзим карда шавад.

  3. Навиштани синфҳои Kotlin: Сохтани синфҳои нав дар Kotlin. Онҳо метавонанд бе мушкилот ба коди Java-и мавҷуда даъват кунанд.

  4. Даъват кардани коди Kotlin аз Java: Синфҳо ва функсияҳои Kotlin метавонанд ба осонӣ аз Java даъват шаванд. Компилятори Kotlin байт-кодро мебарорад, ки пурра мувофиқ бо JVM аст. Функсияҳои сатҳи боло дар Kotlin ба методҳои статикӣ дар синфи Java бо пасфикси Kt (аз ҷониби пешфарз номи файл) компилют мешаванд. @JvmName ва @JvmOverloads барои танзими намоёнӣ ва сигнатураҳо дар Java истифода мешаванд.

    Мисол (Kotlin):

    // MyKotlinFile.kt
    package com.example
    
    fun greet(name: String) {
        println("Hello, $name!")
    }
    
    class MyKotlinClass {
        fun sayGoodbye() {
            println("Goodbye!")
        }
    }
    

    Мисол (Java):

    // MyJavaClass.java
    package com.example;
    
    public class MyJavaClass {
        public static void main(String[] args) {
            // Даъвати функсияи сатҳи боло аз Kotlin
            MyKotlinFileKt.greet("World");
    
            // Даъвати метод аз синфи Kotlin
            MyKotlinClass kotlinObject = new MyKotlinClass();
            kotlinObject.sayGoodbye();
        }
    }
    
  5. Тарҷумаи коди Java-и мавҷуда: IDE (масалан, IntelliJ IDEA) воситаҳои автоматии тарҷумаи синфҳои Java ба Kotlin-ро пешниҳод мекунад. Ин барои гузариши тадриҷӣ муфид аст.

  6. Ҳал кардани @Nullable ва @NotNull: Kotlin фарқ мекунад байни намудҳои nullable ва non-nullable. Аннотацияҳо @Nullable ва @NotNull аз Java (масалан, аз JSR-305, Android, Guava) барои баровардани маълумоти nullability истифода мешаванд. Код дар Kotlin, ки Java-ро даъват мекунад, бояд эҳтиёт кунад, ки эҳтимолан арзишҳои null-ро дар функсияҳои аннотатсияшуда баргардонанд.