Java到Kotlin数组的转换,为什么在不同的场景中会有所不同?
情景1 当我将模块注释从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
@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