마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 documentation에서 static val로 선언 돼 있는 변수 질문입니다.

0 추천

안녕하세요, Kotlin을 막 입문한 사람입니다.

코틀린을 주력으로 하는 커뮤니티는 이 곳인 것 같아 질문 남깁니다.

혹여 제 질문이 너무 기초적이더라도, 너그럽게 이해하여 주신다면 감사하겠습니다.

 

Kotlin은 Java와는 다르게 static 키워드가 존재 하지 않는다고 알고 있습니다.

다만, https://developer.android.com/reference/kotlin/android/app/RemoteInput

위의 documentation을 보면,

Constants 부분에 

static Int EDIT_CHOICES_BEFORE_SENDING_AUTO

static Int EDIT_CHOICES_BEFORE_SENDING_DISABLED

와 같이 작성되어 있습니다.

 

EDIT_CHOICES_BEFORE_SENDING_AUTO를 클릭 해 보면,

static val EDIT_CHOICES_BEFORE_SENDING_AUTO: Int

위와 같이 선언 되어 있는 것 같습니다.

 

그리고 위의 변수 (프로퍼티)에 접근을 할 때에도 마치 Java의 static 필드에 접근하듯이 클래스명.변수명으로 접근이 가능합니다.

RemoteInput.EDIT_CHOICES_BEFORE_SENDING_AUTO

 

즉, 저의 질문은 이 안드로이드 documentation에서 적혀 있는 static 이 무슨 뜻인지 잘 모르겠습니다.

분명 코틀린 파일(.kt)안에서 static 키워드를 작성하면 빨간 줄이 뜨는데, 어떻게 하여 

static val EDIT_CHOICES_BEFORE_SENDING_AUTO: Int

처럼 작성될 수 있는 건가요?

 

답변해주신다면 대단히 감사드리겠습니다.

minsss2 (120 포인트) 님이 2022년 7월 18일 질문

1개의 답변

0 추천

링크에 있는 코드는 자바코드네요. 제가 알기로 Kotlin에는 static 이나 final 키워드가 없습니다. 대신 최상위 레벨의 변수나 companion object를 사용합니다. Kotlin을 누르면 Java코드를 보여주는 버그처럼 보입니다.

public static final String KEY_QUICK_REPLY_TEXT = "quick_reply";
  Notification.Action action = new Notification.Action.Builder(
          R.drawable.reply, "Reply", actionIntent)
          <b>.addRemoteInput(new RemoteInput.Builder(KEY_QUICK_REPLY_TEXT)
                  .setLabel("Quick reply").build()</b>)
          .build();

RemoteInput.EDIT_CHOICES_BEFORE_SENDING_AUTO 를 코틀린 버전으로 바꿔보면, 아래처럼 될 것 같습니다.

class RemoteInput {
    companion object {
        @JvmField
        const val EDIT_CHOICES_BEFORE_SENDING_AUTO = 0
    }
}

 

spark (227,530 포인트) 님이 2022년 7월 18일 답변
...