$30 off During Our Annual Pro Sale. View Details »

Kotlin Java interop and Kotlin Migration

Hadi Tok
December 07, 2019

Kotlin Java interop and Kotlin Migration

Hadi Tok

December 07, 2019
Tweet

More Decks by Hadi Tok

Other Decks in Programming

Transcript

  1. KOTLIN'E GEÇIŞ VE JAVA
    ILE BIRLIKTE KULLANIMI

    View Slide

  2. BEN KIMIM
    ➤ Lead Android Dev @CizitzenMe
    ➤ https://haditok.com

    View Slide

  3. KOTLIN
    ➤ 2011 Yılında Jetbrains tarafından duyuruldu
    ➤ 2017’de Google Android Resmi dil olarak duyuruldu

    View Slide

  4. KOTLIN
    ➤ http://kotlinlang.org/docs/reference/
    ➤ https://try.kotlinlang.org/
    ➤ https://android.github.io/kotlin-guides/interop.html

    View Slide

  5. SOURCE CODE
    ➤ https://github.com/oshamahue/KotlinInteropCases

    View Slide

  6. KOTLIN KONFIGÜRASYONU
    ➤ Kotlin’i aktive etme
    ➤ Tools > Kotlin > Configure Kotlin in Project
    ➤ Gradle dependency annotationProcessor -> kapt
    ➤ Kotlin Interop Lint check
    ➤ Preferences> Editor> Inspections
    ➤ Android>Lint > Interoperability>Kotlin Interoperability

    View Slide

  7. JAVA KODUNU KOTLINE ÇEVIRME

    View Slide

  8. GETTER SETTER

    View Slide

  9. GETTER SETTER JAVA
    private String javaString = "non final string";
    public String getJavaString() {
    return javaString;
    }
    public void setJavaString(String javaString) {
    this.javaString = javaString;
    }

    View Slide

  10. GETTER SETTER KOTLIN
    val kotlinValString = "Value"

    View Slide

  11. GETTER SETTER KOTLIN TO JAVA
    val string = javaToKotlin.javaString
    javaToKotlin.javaString = "New variable"

    View Slide

  12. GETTER SETTER JAVA TO KOTLIN
    String var = kotlinToJava.getKotlinVarString();
    kotlinToJava.setKotlinVarString("New var");

    View Slide

  13. NULL SAFETY

    View Slide

  14. KOTLIN NULL SAFETY
    var nullableString: String? = null
    var notNullableString: String = "foo"

    View Slide

  15. JAVA NULL SAFETY
    private String nullableString = null;
    public String getNullableString() {
    return nullableString;
    }
    public void setNullableString(String nullableString) {
    this.nullableString = nullableString;
    }

    View Slide

  16. JAVA TO KOTLIN NULL SAFETY
    val nullableLength: Int = javaToKotlin.nullableString.length
    val notNullableLength: Int = javaToKotlin.notNullableString.length

    View Slide

  17. JAVA TO KOTLIN NULL SAFETY
    private String nullableString = null;
    public String getNullableString() {
    return nullableString;
    }
    public void setNullableString(String nullableString) {
    this.nullableString = nullableString;
    }

    View Slide

  18. JAVA TO KOTLIN NULL SAFETY
    @Nullable
    private String nullableString = null;
    @Nullable
    public String getNullableString() {
    return nullableString;
    }
    public void setNullableString(@Nullable String nullableString) {
    this.nullableString = nullableString;
    }

    View Slide

  19. JAVA TO KOTLIN NULL SAFETY
    @NotNull
    private String notNullableString = "bar";
    @NotNull
    public String getNotNullableString() {
    return notNullableString;
    }
    public void setNotNullableString(@NotNull String notNullableString) {
    this.notNullableString = notNullableString;
    }

    View Slide

  20. JAVA TO KOTLIN NULL SAFETY
    val nullableLength: Int = javaToKotlin.nullableString.length
    val notNullableLength: Int = javaToKotlin.notNullableString.length

    View Slide

  21. KOTLIN NULLABLE TYPE
    val nullableLength: Int? = javaToKotlin.nullableString.length
    val notNullableLength: Int = javaToKotlin.notNullableString.length

    View Slide

  22. KOTLIN SAFE CALL OPERATOR
    val nullableLength: Int = javaToKotlin.nullableString ?.length

    View Slide

  23. KOTLIN ELVIS OPERATOR
    val nullableLength: Int = javaToKotlin.nullableString ?.length ?: 0

    View Slide

  24. KOTLIN !! OPERATOR
    val nullableLength: Int = javaToKotlin.nullableString ?.length !!

    View Slide

  25. STATIC VS COMPANION
    OBJECT

    View Slide

  26. JAVA STATIC
    public static String javaStaticString = "myJavaStaticString";

    View Slide

  27. JAVA STATIC
    String myString = JavaToKotlin.javaStaticString;

    View Slide

  28. KOTLIN TO JAVA STATIC
    val myJavaStaticString = JavaToKotlin.javaStaticString

    View Slide

  29. KOTLIN TO JAVA STATIC
    class KotlinToJava {
    companion object {
    val companionString = "companion string"
    fun companionFunction(): String {
    return "companion function"
    }
    }
    }

    View Slide

  30. KOTLIN TO JAVA STATIC
    val companionValString = KotlinToJava.companionString
    val companionFunString = KotlinToJava.companionFunction()

    View Slide

  31. JAVA TO KOTLIN COMPANION OBJECT
    companionValString = KotlinToJava.Companion.getCompanionString();
    companionFunString = KotlinToJava.Companion.companionFunction();

    View Slide

  32. KOTLIN TO JAVA STATIC
    class KotlinToJava {
    companion object {
    val companionString = "companion string"
    fun companionFunction(): String {
    return "companion function"
    }
    }
    }

    View Slide

  33. KOTLIN TO JAVA STATIC
    class KotlinToJava {
    companion object {
    @JvmStatic
    val companionString = "companion string"
    @JvmStatic
    fun companionFunction(): String {
    return "companion function"
    }
    }
    }

    View Slide

  34. JAVA TO KOTLIN COMPANION OBJECT
    companionValString = KotlinToJava.Companion.getCompanionString();
    companionFunString = KotlinToJava.Companion.companionFunction();

    View Slide

  35. JAVA TO KOTLIN COMPANION OBJECT
    companionValString = KotlinToJava.getCompanionString();
    companionFunString = KotlinToJava.companionFunction();

    View Slide

  36. PACKAGE LEVEL
    MEMBERS

    View Slide

  37. PACKAGE LEVEL MEMBERS
    const val packageLevelConstant = "kotlinToJava"
    fun packageLevelFunction(): String {
    return "this is a package level function"
    }

    View Slide

  38. PACKAGE LEVEL MEMBERS
    import com.oshamahue.kotlindemo.packageLevelConstant
    import com.oshamahue.kotlindemo.packageLevelFunction
    fun otherPackageLevelFunction() {
    var string = packageLevelFunction()
    string = packageLevelConstant
    }

    View Slide

  39. JAVA TO KOTLIN PACKAGE LEVEL MEMBERS
    String string = KotlinToJavaKt.packageLevelFunction();
    string = KotlinToJavaKt.packageLevelConstant;

    View Slide

  40. JAVA TO KOTLIN PACKAGE LEVEL MEMBERS
    @file:JvmName("KotlinToJavaUtil")
    package com.oshamahue.kotlindemo
    import java.io.IOException
    .
    .
    .
    .

    View Slide

  41. JAVA TO KOTLIN PACKAGE LEVEL MEMBERS
    String string = KotlinToJavaUtil.packageLevelFunction();
    string = KotlinToJavaUtil.packageLevelConstant;

    View Slide

  42. HIGHER ORDER
    FUNCTIONS

    View Slide

  43. HIGHER ORDER FUNCTIONS
    ➤ Bir fonksiyon döndüren
    ➤ Parametre olarak fonksiyon alabilen
    ➤ Temelde bir fonksiyona bir değişken olarak davranabilme

    View Slide

  44. HIGHER ORDER FUNCTIONS
    fun functionPass(func: (String) -> Unit) {
    func("myString") //invoking a function
    }

    View Slide

  45. HIGHER ORDER FUNCTIONS
    functionPass(this ::nullables)

    View Slide

  46. HIGHER ORDER FUNCTIONS
    val func = {
    println("my function")
    }

    View Slide

  47. HIGHER ORDER FUNCTIONS
    fun functionReturn(): () -> Unit {
    val func = {
    println("my function")
    } //function creation
    return func
    }

    View Slide

  48. JAVA TO KOTLIN HIGHER ORDER FUNCTIONS
    fun functionPass(func: (String) -> Unit) {
    func("myString") //invoking a function
    }

    View Slide

  49. JAVA TO KOTLIN HIGHER ORDER FUNCTIONS
    kotlinToJava.functionPass(new Function1() {
    @Override
    public Unit invoke(String string) {
    return null;
    }
    });

    View Slide

  50. JAVA TO KOTLIN HIGHER ORDER FUNCTIONS
    fun functionReturn(): () -> Unit {
    val func = {
    println("my function")
    } //function creation
    return func
    }

    View Slide

  51. JAVA TO KOTLIN HIGHER ORDER FUNCTIONS
    Function0 func = kotlinToJava.functionReturn();
    func.invoke();

    View Slide

  52. EXTENSIONS

    View Slide

  53. EXTENSIONS
    ➤ Hali hazırda bulunan Class’lara kalıtım(inheritance) olmadan
    yeni fonksiyon ya da değişken eklemeyi sağlar
    ➤ Herhangi bir class olabilir
    ➤ Static olarak derlenir

    View Slide

  54. EXTENSION FUNCTIONS
    fun String.getThridLetter(): Char {
    if (this.length > 2) {
    return this.toCharArray()[2]
    } else throw RuntimeException("Length should be at least 3 ")
    }

    View Slide

  55. EXTENSION FUNCTIONS
    val thridLetter = "foo".getThridLetter()

    View Slide

  56. JAVA TO KOTLIN EXTENSION FUNCTIONS
    char thirdLetter = KotlinToJavaUtil.getThridLetter("foo");

    View Slide

  57. TEŞEKKÜRLER
    HTTPS://MOCKK.IO/

    View Slide