Ссылаясь на https://developer.android.com/reference/android/support/annotation/StringDef https://developer.android.com/reference/android/support/annotation/IntDef
Я мог бы легко создать свою проверку компиляции, которая ограничивает мой параметр String определенным типом String (в Java)
e.g.
import android.support.annotation.StringDef;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.SOURCE;
@Retention(SOURCE)
@StringDef({
"allow_one",
"okay_two"
})
public @interface AllowedString { }
Итак, если у меня есть
class TestAnnotation(@AllowedString private val name: String) {
fun printName(@AllowedString name: String) {}
}
И когда я код
val testAnnotation = TestAnnotation("not_allowed")
Android Studio отметит ошибку not_allowed
, поскольку ее нет в списке.
Если я конвертирую в Kotlin интерфейс аннотации AllowedString
, как показано ниже, он больше не работает. Почему?
import android.support.annotation.StringDef
import java.lang.annotation.Retention
import java.lang.annotation.RetentionPolicy.SOURCE
@Retention(SOURCE)
@StringDef("allow_one", "okay_two")
annotation class AllowedString
Почему?