[kotlin] Java 어노테이션 선언에서 Kotlin 상수를 어떻게 참조 할 수 있습니까?

Kotlin이 다음과 같이 주어집니다.

object OldTownRoad {
  const val COWBOY_HATS = "from Gucci"
  const val WRANGLER = "on my booty"
}

그리고이 자바 클래스 :

public class Scrap {
  @Named(OldTownRoad.COWBOY_HATS)
  public void lilNasXrefs() {
    System.out.println(OldTownRoad.COWBOY_HATS);
    System.out.println(OldTownRoad.WRANGLER);
  }
}

컴파일러는 println()호출에 만족 합니다. 그것은의 사용에 대해 불평 COWBOY_HATS에서 @Named이 안드로이드 스튜디오 3.5.3 스크린 샷에서 볼 수 있듯이, “속성 값이 일정해야합니다”라고, 주석 :

코 틀린 오류

나는 노력 @JvmStatic@JvmField이들에 대한 const val선언하지만, 컴파일러는 유효하지도 없다고 불평 const속성.

나는 동일한 결과를 얻는다 companion object:

class OldTownRoad {
  companion object {
    const val COWBOY_HATS = "from Gucci"
    const val WRANGLER = "on my booty"
  }
}

Java 주석에서 참조 할 때 작동하는 다른 Kotlin 상수 구문이 있습니까?



답변

이것이 Android Studio 버그인지 잊었습니다. 페이스 팜 :

코드를 실행하면 정상적으로 실행됩니다. Android Studio 3.5.3은 불필요하게 불평하는 것 같습니다.

문제를 확인하기 위해 버그 보고서 를 제출 했습니다 .

@natario 덕분에 많은 의견을 들었습니다.이 의견은 이것이 IDE 문제 일 수 있음을 깨달았습니다!


답변