У меня есть аннотация, которая требует, чтобы defaultValue
была постоянной времени компиляции. Я беру defaultValue
из enum
ниже:
enum class RaceType {
MARATHON,
SPRINT;
companion object {
fun apply(type: RaceType): RaceDto {
return when (type) {
MARATHON -> MarathonDto()
SPRINT -> SprintDto()
}
}
}
}
Мои dto
следующие:
interface RaceDto {
}
data class MarathonDto: RaceDto
data class SprintDto: RaceDto
при использовании аннотации @QraphQLArgument(defaultValue = RaceType.SPRINT.name)
Kotlin требуется RaceType.SPRINT.name
быть постоянной времени компиляции.
Сама реализация аннотации:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER})
public @interface GraphQLArgument {
String NONE = "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
String NULL = "\n\t\t\n\t\t\n\ue000\ue001\ue002\ue003\n\t\t\t\t\n";
String name();
String description() default "";
String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
Class<? extends DefaultValueProvider> defaultValueProvider() default JsonDefaultValueProvider.class;
}
Я просмотрел похожих вопросов , но не понимаю, как это может быть решена. Я также нашел статью , относящуюся к topi c, но пока ничего не получалось.
Примечание: я не могу изменить аннотацию, так как она из библиотеки, и я также не могу изменить библиотеку .
Подводя итог, есть ли способ сделать из enum
константы времени компиляции в Kotlin использование в аннотации?