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

Java到Kotlin数组的转换,为什么在不同的场景中会有所不同?,kotlin,Kotlin,情景1 当我将模块注释从Java插入Kotlin时,如下所示 @Module(includes = {AModule.class, XModule.class}) 它变为 @Module(includes = [AModule::class, XModule::class]) 场景2 但是当我转换下面的 Class<?>[] classArray = {AModule.class, XModule.class}; 问题 为什么在上述两种情况下,{AModule.class,XM

情景1 当我将模块注释从Java插入Kotlin时,如下所示

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

@Module(includes = [AModule::class, XModule::class])
场景2 但是当我转换下面的

Class<?>[] classArray = {AModule.class, XModule.class};
问题
为什么在上述两种情况下,
{AModule.class,XModule.class}
的转换不同,其中一种使用
[]
,另一种使用
数组of

由于Kotlin 1.2,您可以在注释中使用数组文字。这些不是实际Kotlin语法的一部分,仅保留用于注释。这在将来可能会改变,但目前您无法在实际代码中使用数组文本

阅读注释

对于具有数组类型的其他参数,需要使用数组 文字语法(自Kotlin 1.2以来)或数组(…):

//爪哇

public @interface AnnWithArrayMethod {

    String[] names();

}
//Kotlin 1.2+:

@AnnWithArrayMethod(names = ["abc", "foo", "bar"]) 
class C
//较旧的Kotlin版本:

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

Kotlin没有普通程序代码的数组文本。使用显式函数或构造函数调用来创建数组可能是一种设计决策。在注释中,不允许函数调用,因此使用这种伪文字表示法。
@AnnWithArrayMethod(names = arrayOf("abc", "foo", "bar")) 
class D