Поиск правильного синтаксиса kotlinpoet для инициализации PropertySpec.Builder для значений IntArrays и Array‹String›

Не вижу правильного синтаксиса для инициализации типов Array значениями существующих типов из проекта, примитивные типы работают нормально, а классы, определенные программистом

Target(
    AnnotationTarget.FIELD,
    AnnotationTarget.PROPERTY_GETTER,
    AnnotationTarget.VALUE_PARAMETER,
    AnnotationTarget.PROPERTY)
    @Retention(AnnotationRetention.SOURCE)

класс аннотаций ConfigurableIntArray (ключ val: String, текст val: String, описание val: String, val initialValue: IntArray)

Class BlockAnnotationTester2(@field:ConfigurableIntArray(
    key = UIComponentSettings.MAXIMUM_LENGTH_KEY,
    text = UIComponentSettings.MAXIMUM_LENGTH_TEXT,
    description = UIComponentSettings.MAXIMUM_LENGTH_DESCRIPTION,
    initialValue = [2]) 
val unusedIntArray: IntArray = intArrayOf(1, 2, 3, 4),

 for (data in memberDataIntArray)...`
addProperty( 
                  PropertySpec.builder(TestAnnotationProcessor.INITIAL_VALUE, IntArray::class) 

                        .initializer("intArrayOf(${data.annotation.initialValue.asList()})")
                        .build()
                ) 
   object Member_BlockAnnotationTester2UnusedIntArray {

    const val KEY: String = 
    "configurable_block_detail_ui_component_maximum_length"

    const val TEXT: String = "Maximum length"

    var INITIAL_VALUE: IntArray = intArrayOf([2]) <-- issue 

const val DESCRIPTION: String = "Maximum length of the corresponding UI 
component"
}

Может только заставить его инициализировать статические данные в виде простых текстовых литералов или первое значение


person NinePoolNoRush120    schedule 01.07.2019    source источник


Ответы (1)


Предполагаю, что есть более простой способ, но это сработало

.initializer("%L", buildCodeBlock {
                                var lregex = 
    data.annotation.initialValue.asList().toString()
                                lregex = lregex.replace("["," ")
                                lregex = lregex.replace("]"," ")
                                add("intArrayOf($lregex)")
                            })
person NinePoolNoRush120    schedule 03.07.2019