본문 바로가기
Blog/TIL

2025-01-08 (수)

by 코젼 2025. 1. 8.
728x90
반응형

lateinit var + private set

  • 코틀린에서 지원하는 lateinit, lazy 를 통한 지연 생성.
  • 해당 프로퍼티가 사용될 때 프로퍼티가 만들어짐.
  • 비용, 시간 절약 가능.
  • null 로 초기화해서 초기 null check 를 수행하지 않고 해당 프로퍼티의 내용을 참조할 수 있음.
  • 테스트 코드에서 해당 필드에 접근하려면 리플렉션 사용
    fun setPrivateField(obj: Any, fieldName: String, value: Any) {  
      val property = obj::class.declaredMemberProperties.find { it.name == fieldName }  
      property?.apply {  
          isAccessible = true  
          val field = this.javaField  
          field?.isAccessible = true  
          field?.set(obj, value)  
      }  
    }
    

val passportVO = PassportVO(base.email)
setPrivateField(passportVO, "businessId", businessId)

```

  • kotlin 에서 리플렉션(reflection) 을 사용하여 private 또는 접근 불가능한 필드의 값을 동적으로 설정하는 유틸리티 함수.
  • 클래스의 접근 제한자(private, protected 등) 와 상관없이 특정 객체의 필드 값을 강제로 설정함.
728x90
반응형

'Blog > TIL' 카테고리의 다른 글

2025-01-10 (금)  (1) 2025.01.10
2025-01-09 (목)  (0) 2025.01.09
2025-01-07 (화)  (0) 2025.01.07
2025-01-06 (월)  (0) 2025.01.06
[240907] 이진법  (0) 2024.09.07

댓글