[Android][Kotlin] Companion Object

gang_shik·2021년 9월 1일
0

Companion Object?

  • 자바에서처럼 정적(static)변수 혹은 메소드가 없음

  • 여기서 이는 주로 안드로이드에서는 액티비티/프래그먼트의 인텐트 Extra로 사용하는 키, 로그 출력을 위한 태그(Tag)이름 정의, 뷰 내부에서 사용하는 고정된 길이 값(너비,높이 등), 각종 유틸리티 클래스 내 메서드 등 사용하는 경우에 애매하게 됨

  • 이를 클래스 외부에 별도로 선언하기 상당히 모호함

  • 그래서 이를 클래스 인스턴스 없이 객체를 생성하기 위해서 companion object를 활용함

  • 이렇게 한다면 바로 손쉽게 호출할 수 있음


예시

  • 아래와 같이 권한 요청을 하고 이 권한 요청에 대한 RequestCode를 확인하고 처리하는 메소드가 있기 때문에 이를 아예 아래와 같이 companion object로 설정하고 같은 클래스내에서 활용을 용이하게 함
// RECORD_AUDIO에 대한 requestCode를 정의함
    companion object {
        private const val REQUEST_RECORD_AUDIO_PERMISSION = 201
    }
    
    ....
    
    // 오디오 권한에 대해서 요청하기 위한 메소드
    private fun requestAudioPermission() {
        // 앞서 정의한 권한과 requestCode를 할당해줌
        requestPermissions(requiredPermissions, REQUEST_RECORD_AUDIO_PERMISSION)
    }

참고자료

profile
Stay Humble, Hustle Hard

0개의 댓글