Java到Kotlin数组转换,为什么在不同的情况下有所不同



方案1 当我以下从爪哇到kotlin的dagger模块注释

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

它更改为

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

方案2 但是,当我转换以下

Class<?>[] classArray = {AModule.class, XModule.class};

它更改为

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

问题为什么{AModule.class, XModule.class}的转换在上述2个方案中有所不同,其中一个是使用[],而另一个正在使用arrayOf

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

在此处阅读有关注释的信息。

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

//java

public @interface AnnWithArrayMethod {
    String[] names();
}

//kotlin 1.2 :

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

//较旧的kotlin版本:

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

相关内容

最新更新