Java-совместимость: как объявить константу массива компиляции в Котлине?

У меня есть это объявление аннотации Java и вы хотите использовать его в Kotlin

class CurlCommand { Parameter(names = "-groups", description = "Comma-separated list of group names to be run") var groups: Array<String>? = null } 

Отчеты компилятора TYPE_MISMATCH Обязательно: kotlin.Array <kotlin.String> Найдено: kotlin.String

я пробовал

 Parameter(names = Array<String>(1, {i-> "-groups"}), description = "Comma-separated list of group names to be run") var groups: Array<String>? = null 

и получил «Error: (20, 23) Kotlin: параметр аннотации должен быть константой времени компиляции»

Как я могу удовлетворить компилятор Kotlin?

Java просто принимает

 @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") public String groups; 

Вы объявляете константу в Котлине так:

 const val LG_PACKAGE = "com.myapp" 

Однако в документации kotlin для констант времени компиляции указано, что они могут быть только типа String или примитивного типа. Таким образом, самое близкое, что вы можете получить, если хотите использовать константы, следующее:

 const val LG_PACKAGE = "com.myapp" @EnableJpaRepositories(basePackages = arrayOf(LG_PACKAGE)) @EntityScan(basePackages = arrayOf(LG_PACKAGE)) open class LgApp { 

Иногда ответ очень прост, когда он случайно обнаруживает его

 array("-groups") 

Хотя конвертер Kotlin дал мне этот код

 @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") public String groups; 

как я уже говорил выше.

Intereting Posts