안드로이드에서는 enum 사용에대해 보통 비추천을 하고 있기 때문에 숫자 또는 문자열로 기준 값을 정의 한 뒤
이를 기준으로 값을 비교 하는 형태가 주인데 문제는 enum 과 같이 딱 떨어지는 값이 아니다 보니
예외 상황이 발생될 가능성이 존재하게 된다.
이를 보안하기 위해 @IntDef 또는 @StringDef 로 지정하여 사용하는 것인데 이에 한 예제는 아래와 같다.
interface IWindowDelegate {
companion object {
const val WINDOW = 0
const val POPUP_WINDOW = 1
}
}
@IntDef(value = [
IWindowDelegate.WINDOW,
IWindowDelegate.POPUP_WINDOW
])
annotation class WindowDelegateType
가령 윈도우가 두가지 타입이 존재하고 이를 IntDef 를 통해 선언하였다면
아래와 같이 사용가능 하다.
@WindowDelegateType
val type: Int
저렇게 지정해 두었기 때문에 만약 IntDef 내의 값이 아니라면 에디터에서 오류를 확인할 수 있다.
'Android' 카테고리의 다른 글
SameSite=Lax (0) | 2020.01.29 |
---|---|
cannot inline bytecode built with jvm target 1.8 into bytecode that is being built with jvm target 1.6. please specify proper '-jvm-target' option (0) | 2019.12.05 |
kotlin 그리고 java builder 패턴 (0) | 2019.11.13 |
dokka (kdoc) (0) | 2019.11.06 |
간만에 안보던 apk 업데이트를 봤더니만 ACTION_INSTALL_PACKAGE 이 deprecated 되었다. =_ = (0) | 2019.10.31 |