Kotlin의 Java 정적 함수와 동일

Kailash Vaviya 2024년2월15일
  1. Java의 정적 함수에 해당하는 Kotlin
  2. Companion 객체를 사용하여 Kotlin에서 정적 기능 달성
  3. @JvmStatic 주석을 사용하여 Kotlin에서 정적 기능 구현
  4. 패키지 수준 기능을 사용하여 Kotlin에서 정적 기능 구현
Kotlin의 Java 정적 함수와 동일

Java 프로그래밍 언어를 사용하는 Android 개발자는 static 키워드를 잘 알고 있습니다. Java의 정적 키워드는 액세스할 수 없는 수정자입니다.

static 키워드를 사용하여 Java에서 정적 변수 및 메서드를 만들 수 있습니다. 메모리 관리 효율성에 도움이 됩니다.

JVM(Java Virtual Machine)은 이러한 변수와 기능에 메모리를 한 번만 할당하여 메모리를 효율적으로 만듭니다. 그러나 Kotlin은 이제 Android 개발의 공식 언어입니다.

개발자가 Java에서 Kotlin으로 이동할 때 가장 큰 장애물 중 하나는 Kotlin에서 정적 함수를 만드는 것입니다. Kotlin에는 정적과 같은 키워드가 없습니다.

이 기사에서 우리는 Kotlin에서 Java의 static 키워드에 해당하는 것을 배울 것입니다.

Java의 정적 함수에 해당하는 Kotlin

Kotlin 프로그래밍 언어에는 static 키워드가 없지만 Kotlin에서 여전히 정적 기능을 구현할 수 있습니다.

정적 방법의 핵심 이점은 메모리 관리 효율성입니다. 따라서 정적 기능을 달성하려면 메모리가 한 번만 할당되고 값이 변경되지 않도록 하는 방법을 찾아야 합니다.

Kotlin에서 정적 기능을 구현하는 세 가지 방법이 있습니다.

  • companion 개체 사용
  • @JvmStatic 주석 사용
  • 패키지 수준 기능 사용

세 가지 방법을 각각 살펴보겠습니다. 우리는 또한 그것들을 구현하는 방법의 예를 살펴볼 것입니다.

Companion 객체를 사용하여 Kotlin에서 정적 기능 달성

companion 키워드를 사용하여 컴패니언 개체를 만들 수 있습니다. JVM은 클래스와 동일한 파일에 컴패니언 객체를 저장합니다. 따라서 개체는 클래스의 모든 개인 변수와 함수에 액세스할 수 있습니다.

컴패니언 개체는 클래스와 함께 초기화됩니다. 따라서 메모리 할당은 한 번만 발생합니다. 컴패니언 개체의 의미 체계는 Java 정적 이니셜라이저의 의미 체계와 유사합니다.

이제 컴패니언 개체가 무엇이고 어떻게 작동하는지 알았으므로 예제를 살펴보겠습니다. 이 예에서 우리는 컴패니언 객체를 만들고 코틀린에서 정적 기능을 달성하기 위해 메모리 관리를 처리하는 방법을 볼 것입니다.

fun main(args: Array<String>) {
    // Accessing static variables and methods without creating objects
    println("Welcome!"+'\n' + "Accessing function of the ExampleClass without creating an object."
            + '\n' + ExampleClass.staticFunction());
}

class ExampleClass{
    companion object {
        fun staticFunction(): String {
            return "Static Method!"
        }
    }
}

출력:

Companion Object를 사용하여 Kotlin에서 정적 기능 달성

위의 예제 코드의 데모를 확인하려면 여기를 클릭하십시오.

위 코드에서 변수를 변경하려고 하면 오류가 발생합니다. 정적 메서드와 변수는 메모리가 한 번만 할당되므로 변수를 변경하면 오류가 발생합니다.

@JvmStatic 주석을 사용하여 Kotlin에서 정적 기능 구현

companion 객체를 사용하는 것 외에도 @JvmStatic 주석을 사용하여 정적 기능을 구현할 수도 있습니다. 공식 문서에 따르면 이 주석은 JVM이 추가 정적 메서드를 생성해야 한다고 지정합니다.

@JvmStatic 주석을 사용하는 것은 매우 간단합니다. 정적이 되고 싶은 기능 앞에 주석만 추가하면 됩니다.

다음은 동일한 것을 보여주는 예입니다.

fun main(args: Array<String>) {
    // Accessing static variables and methods without creating objects
    println("Hello!"+'\n' + ExampleClass.staticFunction());
}

object ExampleClass{
    @JvmStatic
    fun staticFunction(): String {
        return "Static Method!"
    }
}

출력:

@JvmStatic 주석을 사용하여 Kotlin에서 정적 기능 달성

위의 예제 코드의 데모를 확인하려면 여기를 클릭하십시오.

패키지 수준 기능을 사용하여 Kotlin에서 정적 기능 구현

메서드 또는 변수를 패키지 수준 멤버로 선언하여 Kotlin에서 정적 기능을 달성할 수도 있습니다. 패키지 수준 함수를 사용하는 것은 정적 기능을 구현하는 편리한 방법입니다.

먼저 패키지에 기본 .kt 파일을 만든 다음 메서드를 정의해야 합니다. 일단 정의되면 패키지를 가져오고 모든 클래스에서 메서드를 호출할 수 있습니다.

방법은 다음과 같습니다.

// create a .kt file first in any package and define the method
package example.app

fun product(x: Int, y: Int){
    return x*y
}

// after defining the method, import the package and call it from any class
import example.app.product

product (3*7)
Kailash Vaviya avatar Kailash Vaviya avatar

Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.

LinkedIn

관련 문장 - Kotlin Static