Нумерованный тип аннотации в Котлине - PullRequest
0 голосов
/ 07 марта 2019

В Java я могу определить перечисляемый тип аннотации следующим образом (с здесь )

// Constants
public static final String WINTER = "Winter";
public static final String SPRING = "Spring";
public static final String SUMMER = "Summer";
public static final String FALL = "Fall";

// Declare the @ StringDef for these constants:
@StringDef({WINTER, SPRING, SUMMER, FALL})
@Retention(RetentionPolicy.SOURCE)
public @interface Season {}

Что такое Kotlin-версия этого кода?

У меня проблема при использовании этого (прямое преобразование с использованием IDE)

// Constants
private const val WINTER = "Winter"
private const val SPRING = "Spring"
private const val SUMMER = "Summer"
private const val FALL = "Fall"

// Declare the @ StringDef for these constants:
@StringDef(WINTER, SPRING, SUMMER, FALL)
@Retention(AnnotationRetention.SOURCE)
annotation class Season

так как я не могу получить доступ, например Season.WINTER

1 Ответ

0 голосов
/ 07 марта 2019

В Kotlin вам лучше использовать enum class.У меня было много проблем с преобразованием значений @IntDef и @StringDef в Kotlin.

enum class Season constructor(val value: String) {
  WINTER("Winter"),
  SPRING("Spring"),
  SUMMER("Summer"),
  FALL("Fall");

  override fun toString(): String = value
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...