方案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