일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 인스타핫플
- 수성구맛집
- 의무경찰
- 안드로이드앱개발
- 대구인스타핫플
- 동성로카페
- 대구맛집
- 애드센스
- 파이썬
- androidstudio
- 감성카페
- 동성로맛집
- Android
- 앱개발
- 동성로핫플
- 수성구카페
- 대구카페
- 코딩공부
- 안드로이드개발
- 안드로이드스튜디오
- 안드로이드앱
- 범물동카페
- 안드로이드
- 대구핫플
- 애드몹
- 개발자
- 범물동
- 어플개발
- 코딩
- 지산동카페
Archives
- Today
- Total
Glacier's Daily Log
@JvmField 어노테이션으로 Java+Kotlin 환경에 대응하기 본문
반응형
ℹ️ 배경
회사에서 개발 중 기능의 공통화를 위해서 여러 클래스의 상위 클래스를 제작하였다.
작업 중 상위카드인 ~~~~~.kt에 선언된 var root: SomeDto? = null 를 상속받은 클래스에서 사용할 일이 생겼다.
☢️ 이슈
코틀린에서는 간단하게 직접 변수명으로 접근할 수 있지만, Kotlin으로 선언된 클래스를 상속받은 Java 코드에서는 Setter/Getter를 통해서 접근할 수 밖에 없는 문제가 생겼다.
따라서 기존에 root로 접근하던 수많은 코드를 모두 getRoot()로 변경해주어야 하는 상황이 발생했다.
✅ 해결 @JvmField
Instructs the Kotlin compiler not to generate getters/setters for this property and expose it as a field.
즉 코틀린 컴파일러가 getter/setter를 자동으로 생성하지 못하게 하고, 직접 필드를 노출시켜 접근할 수 있도록 만들어주는 어노테이션이 제공되고 있었다.
@JvmField
var root: SomeDto? = null
로 문제를 해결할 수 있었다.
Java + Kotlin 환경에서 개발할 때는 JVM 어노테이션에 대해서 공부하고 잘 활용하면 유용할 것 같다.
반응형
'Coding > Android' 카테고리의 다른 글
헷갈리는 Sealed, Open, Abstract Class를 정리해보자 (0) | 2024.09.26 |
---|---|
코틀린 SAM-constructor 란? 그리고 코틀린에서 clickListener를 간단하게 쓸 수 있는 이유 (0) | 2024.04.09 |
[Kotlin] vararg로 파라미터 갯수를 유동적으로 지정하기 (0) | 2024.01.29 |
UI 작성시 ConstraintLayout을 활용을 권장하는 이유 (1) | 2024.01.25 |
runCatching { } 과 Result Type (0) | 2024.01.24 |
Comments