본문 바로가기
Android/Tip

[Android] Java 코드에서 Kotlin 코드 사용하기

by Jay Son 아기 냥이 해린 짱💖 2021. 5. 16.

기존앱에서 코틀린 추가 방법은 아래 링크 참조

https://json8.tistory.com/155

 

[Android] android java kotlin 같이 쓰기

개요 : 기존 자바로 구현되어 있는 앱에 Kotlin 코드와 같이 사용하고 싶을 경우 Kotlin SDK 추가 방법 및 API 호출 방법 공유 Project build.gradle에 kotlin plugin 선언 코틀린 버전은 원하는 버전으로 사용...

json8.tistory.com

Java 코드에서 Kotlin 코드 사용 방법

 

Module build.gradle에 선언한 kotlin 경로에 파일 생성

 

build.gradle

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

 

src/main/kotlin.com.example.javawithkotlin.Funchtion.kt 객체 생성.

 

package com.example.javawithkotlin

fun main() {
    printMessage("Hello")
    printMessageWithPrefix("Hello", "Log")
    printMessageWithPrefix("Hello")
    printMessageWithPrefix(prefix = "Log", message = "Hello")
    println(sum(1, 2))
    println(multiply(2, 2))
}

/**
 * printMessage 메소드 생성
 * Unit 은 return 없다는 의미로 생략해도 됨.
 * @param message String 형 파라미터 전달 받음.
 */
fun printMessage(message: String): Unit {
    println(message)
}

/**
 * printMessageWithPrefix 메소드 생성
 * @param message String 형 파라미터 전달 받음.
 * @param prefix String 형 기본값을 "Info"로 선언하고 파라미터
 * prefix 변수에 기본 값이 설정되어 있지만 파라미터로 새로운 값을 전달 받아 변겨아 할 수 있음.
 */
fun printMessageWithPrefix(message: String, prefix: String = "Info") {
    println("[$prefix] $message")
}

/**
 * Int 형 반환 메소드
 * 전달 받은 값 x,y의 합 결과를 Int 형으로 반환
 * @param x Int 형으로 값을 전달 받은
 * @param y Int 형으로 값을 전달 받은
 */
fun sum(x: Int, y: Int): Int {
    return x + y
}

/**
 * Int 형 반환 메소드
 * 전달 받은 값 x,y의 곱한 값 결과를 Int 형으로 반환
 * sum()과 다르게 한줄로 표현 가능.
 */
fun multiply(x: Int, y: Int) = x * y

기존 Java 앱에서 Kotlin 객체를 선언 사용

        // Kotlin -> JAVA
        int sumResult = FunctionsKt.sum(4,5);
        Log.d("Json", "sumResult Kt = " + sumResult);

 

테스트르 위해 동일한 기능을 하는 Function 객체를 Java코드 생성 후 사용

        // Java -> Java
        FunctionsJava functionsJava = new FunctionsJava();
        sumResult = functionsJava.sum(4, 5);
        Log.d("Json", "sumResult Java = " + sumResult);

결과

코틀린 코드와 자바 코드 동일한 결과를 출력한다. (당연한 이야기)

 

 

MainActivity.java

package com.example.javawithkotlin;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Kotlin -> JAVA
        int sumResult = FunctionsKt.sum(4,5);
        Log.d("Json", "sumResult Kt = " + sumResult);

        // Java -> Java
        FunctionsJava functionsJava = new FunctionsJava();
        sumResult = functionsJava.sum(4, 5);
        Log.d("Json", "sumResult Java = " + sumResult);
    }
}

FunctionsJava.java

package com.example.javawithkotlin;

public class FunctionsJava {

    public int sum(int x, int y) {
        return x + y;
    }
}
반응형