当前位置: 首页 > 知识库问答 >
问题:

正在寻找正确的kotlinpower语法来初始化PropertySpec。IntArrays和Array<String>值的生成器

丌官淇
2023-03-14

看不到将数组类型初始化为项目中现有类型的值的正确语法,原始类型工作正常,程序员定义的类

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"
}

只能让它初始化为纯文本文本中的静态数据或第一个值

共有1个答案

严劲
2023-03-14

猜测有一个更简单的方法,但这奏效了

.initializer("%L", buildCodeBlock {
                                var lregex = 
    data.annotation.initialValue.asList().toString()
                                lregex = lregex.replace("["," ")
                                lregex = lregex.replace("]"," ")
                                add("intArrayOf($lregex)")
                            })
 类似资料:
  • 下面的代码定义了一个数组 当我使用这个数组时 给出错误: “dota2rtl.palphabetsdic”的类型初始值设定项引发异常。---->System.NullReferenceException:对象引用未设置为对象的实例。 有人能帮我一下吗? 注意,什么是NullReferenceException以及如何修复它?覆盖数组,但应将其设置为不。

  • 问题内容: 用RefluxJS异步初始化数据的正确方法是什么?是否有类似于AngularJS的解决方案,或者Flux的实现与此无关(路由器应该处理此职责)? 问题答案: 在应用程序的顶级组件中,使用方法(docs)触发获取数据的操作。最初渲染组件时将调用此方法。 例如:

  • 问题内容: 要声明一个具有固定大小的空切片,最好这样做: 要么: 只想知道哪种方法是正确的。 问题答案: 您提供的两个选择在语义上是相同的,但是使用会导致内部调用 runtime.makeslice (Go 1.14)。 您还可以选择保留其值: 如Golang.org博客中所述: nil切片在功能上等效于零长度切片,即使它没有指向任何内容。它的长度为零,可以附加分配。 甲片段将然而入而空片将编组成

  • 要声明大小不固定的空切片,最好执行以下操作: 或: 只是想知道哪一个是正确的方法。

  • 问题内容: 我正在设置用于学习JavaEE7中CDI的基本环境。我有以下代码可以启动。只是启动和关闭。 我正在控制台上关注。 有问题的线是。这仅表示依赖注入将不起作用。但是我不确定是什么问题。我已经添加了。我什至没有达到初始化对象的目的,那为什么会出现这个问题呢? Weld的官方文档还给出了阅读此答案后得到的相同代码。“ Antonio Goncalves”撰写的“ Beginning Java

  • 问题内容: 将log4j添加到我的应用程序后,每次执行我的应用程序时,都会得到以下输出: 看来这意味着缺少配置文件。此配置文件应位于何处,什么是良好的入门内容? 我使用纯Java开发桌面应用程序。因此没有网络服务器等… 问题答案: 默认情况下,在上查找名为或的文件。 您可以按照此处所述通过设置系统属性来控制它用来初始化自身的文件(查找“默认初始化过程”部分)。 例如: 将导致在类路径上查找名为的文