在android开发页面的匕首部分, NetworkModule.class
在java中,代码编写为 [NetworkModule::class]
Kotlin密码。
我想 NetworkModule.class
在java中应该是 NetworkModule::class.java
在Kotlin,不是吗?
为什么要用方括号( []
)? 我认为这和 get
,但我们为什么需要它?
我在读这个:https://developer.android.com/training/dependency-injection/dagger-android#java
在“匕首模块”部分,
java代码:
@Component(modules = NetworkModule.class)
public interface ApplicationComponent {
...
}
用kotlin编写的相同代码:
@Component(modules = [NetworkModule::class])
interface ApplicationComponent {
...
}
1条答案
按热度按时间vsaztqbk1#
这是kotlin1.2中添加的仅在注解中支持的数组文本语法。您可以使用它将事物的数组传递给注解。所以呢
[NetworkModule::class]
实际上是一个包含单个元素的数组NetworkModule::class
.翻译成java的kotlin代码是:
只是
{}
在java中,当数组中只有一个元素时,可以省略方括号。但是,你不能只写NetworkModule::class
在Kotlin。您必须明确地说它是一个数组,使用如下方法[]
,或arrayOf
,除非是value
参数,在这种情况下,它被转换为vararg
.一般来说,
NetworkModule.class
在java中应该翻译成NetworkModule::class
在注解中时。但请注意,这是一种KClass
. 如果你想要一个java.lang.Class
,添加.java
.