gpt4 book ai didi

kotlin - Java 到 Kotlin 数组的转换,为什么在不同的场景中会有所不同?

转载 作者:行者123 更新时间:2023-12-02 12:42:26 26 4
gpt4 key购买 nike

场景一
当我从 Java 到 Kotlin 的 Dagger Modules Annotation 如下

@Module(includes = {AModule.class, XModule.class})

它变为
@Module(includes = [AModule::class, XModule::class])

场景二
但是,当我转换以下
Class<?>[] classArray = {AModule.class, XModule.class};

它变为
val classArray = arrayOf(AModule::class.java, XModule::class.java)

问题
为什么 {AModule.class, XModule.class}的转换上述两种情况有所不同,其中一种使用 [] ,另一个使用 arrayOf反而?

最佳答案

从 Kotlin 1.2 开始,您可以在注解中使用数组字面量。这些不是实际 Kotlin 语法的一部分,仅保留用于注释。这可能会在 future 发生变化,但目前您无法在实际代码中使用数组文字。

阅读注释 here .

For other arguments that have an array type, you need to use the array literal syntax (since Kotlin 1.2) or arrayOf(...):

// Java

public @interface AnnWithArrayMethod {

String[] names();

}

// Kotlin 1.2+:

@AnnWithArrayMethod(names = ["abc", "foo", "bar"]) 
class C

// Older Kotlin versions:

@AnnWithArrayMethod(names = arrayOf("abc", "foo", "bar")) 
class D

关于kotlin - Java 到 Kotlin 数组的转换,为什么在不同的场景中会有所不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55272203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com