App/Kotlin

[Android_Kotlin] 지연 초기화 방법 (lateinit, by lazy)

Cune 2022. 5. 4. 21:36

 

 

0. Nullable로 선언

-일반적으로 null을 허용하고 null값으로 초기화하는 방법

class Test{
	var name: String? = null
    init {
    	name = "김이름"
    }
}

 

1. val ~ by lazy

-val로 변수를 선언하고 변수가 최초 호출될때 {}안에 넣은 값으로 초기화되는 방법

-null 가능

class MainActivity : AppCompatActivity(){

    private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)
    }

 

2. lateinit var

-lateinit var로 변수를 선언만 미리 해놓고 나중에 값을 초기화하는 방법

-null 불가능

(*기본자료형인 Int, Long, Double, Float는 사용 불가능)

class MainActivity : AppCompatActivity(){

    private lateinit var binding : ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
    }