Computer >> 컴퓨터 >  >> 프로그램 작성 >> Android

Kotlin – lazy 대 lateinit를 사용한 속성 초기화

<시간/>

Kotlin 라이브러리는 속성 선언에 대해 두 가지 다른 액세스 수정자를 제공합니다.

이 기사에서는 이 두 액세스 수정자의 차이점과 애플리케이션에서 사용하는 방법을 강조할 것입니다.

라티니트

"lateInit" 변수를 생성하려면 해당 변수의 접근 한정자로 "lateInit" 키워드를 추가하기만 하면 됩니다. 다음은 Kotlin에서 "lateInit"을 사용하기 위해 따라야 하는 일련의 조건입니다.

  • 변경 가능한 변수와 함께 "lateInit"를 사용하십시오. 즉, "lateInit"와 함께 "var" 키워드를 사용해야 합니다.

  • "lateInit"은 NULL을 허용하지 않는 데이터 유형에만 허용됩니다.

  • "lateInit"은 기본 데이터 유형에서 작동하지 않습니다.

  • "lateInit"는 변수 속성에 getter가 없을 때 사용할 수 있습니다. 및 세터 방법.

예시

변수를 lateInit으로 선언합니다. 프로그램 전체에서 동일한 액세스 방법을 알아보겠습니다.

class Tutorial {

   lateinit var name : String

   fun checkLateInit(){
      // checking whether the value is assigned or not
      if(this::name.isInitialized)
         println("Your value is not assigned");

      else{
         // initializing name
         name = "www.tutorialspoint.com/"
         println(this.name)
         // this will return true
      }
   }
}

fun main() {
   var obj=Tutorial();
   obj.checkLateInit();
}

출력

코드를 실행하면 다음과 같은 출력이 생성됩니다 -

www.tutorialspoint.com/

지연 초기화

효율적인 메모리 관리를 위해 Kotlin은 지연 초기화라는 새로운 기능을 도입했습니다. 게으른 키워드를 사용하면 호출될 때만 개체가 생성되고 그렇지 않으면 개체가 생성되지 않습니다. 게으른() 람다를 받아서 lazy 인스턴스를 반환하는 함수입니다. 적용된 지연 속성의 대리자 역할을 할 수 있습니다. 개체의 불필요한 초기화를 방지하도록 설계되었습니다.

  • Lazy는 NULL을 허용하지 않는 변수에만 사용할 수 있습니다.

  • 변수는 val만 가능합니다. "var" 허용되지 않습니다.

  • 개체는 한 번만 초기화됩니다. 이후 캐시 메모리에서 값을 받습니다.

  • 개체는 응용 프로그램에서 사용될 때까지 초기화되지 않습니다.

예시

이 예에서는 지연 변수 "myName"을 선언합니다. 그리고 우리는 코드의 이 부분에 대한 호출이 한 번만 발생하고 값이 초기화될 때 애플리케이션 전체에서 값을 기억한다는 것을 알 수 있었습니다. 지연 초기화를 사용하여 값을 할당하면 다시 할당할 수 없습니다.

class Demo {
   val myName: String by lazy {
      println("Welcome to Lazy declaration");
      "www.tutorialspoint.com"
   }
}

fun main() {
   var obj=Demo();
   println(obj.myName);
   println("Second time call to the same object--"+obj.myName);
}

출력

코드를 실행하면 다음과 같은 출력이 생성됩니다 -

Welcome to Lazy declaration
www.tutorialspoint.com
Second time call to the same object--www.tutorialspoint.com