kotlin - 寻找正确的 kotlinpoet 语法来初始化 IntArrays 和 Array 的 PropertySpec.Builder价值观
问题描述
看不到将 Array 类型初始化为项目中现有类型的值的正确语法,原始类型工作正常,程序员定义的类
Target(
AnnotationTarget.FIELD,
AnnotationTarget.PROPERTY_GETTER,
AnnotationTarget.VALUE_PARAMETER,
AnnotationTarget.PROPERTY)
@Retention(AnnotationRetention.SOURCE)
注释类 ConfigurableIntArray( val key: String, val text: String, val description: 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"
}
只能让它初始化为纯文本文字或第一个值中的静态数据
解决方案
猜测有一种更简单的方法,但这有效
.initializer("%L", buildCodeBlock {
var lregex =
data.annotation.initialValue.asList().toString()
lregex = lregex.replace("["," ")
lregex = lregex.replace("]"," ")
add("intArrayOf($lregex)")
})
推荐阅读
- java - 如何将OX12转换为十进制
- python - 根据不同的行值创建新列并计算每个值的频率
- php - 使用 Jquery Ajax 将数据发送到另一个页面不起作用
- python - 在 Python 中运行树结构
- c++ - C++类指针动态数组释放问题
- python - 修复此检查器中的线程错误并使其接受更多线程
- html - 如何从 CSS 中的图像复制此文本?
- google-chrome - 如何从 gdrive 中删除此文件夹 - 它仍然显示
- apache-spark - Spark 3.0 JdbcRDD Java - 为没有 ID 列的视图指定 lowerBound 和 upperBound 的问题
- java - 了解 OpenJDK 与 Oracle JDK 的使用