sta*_*iet 5 java android kotlin dagger
在 Android 开发页面的 Dagger 部分,
NetworkModule.class
Java 代码的编写方式[NetworkModule::class]
与 Kotlin 代码相同。
我认为NetworkModule.class
在 Java 中应该NetworkModule::class.java
在 Kotlin 中,不是吗?
为什么要使用方括号([]
)?我认为它与 相同get
,但我们为什么需要它?
我在读这个:https : //developer.android.com/training/dependency-injection/dagger-android#java
在“匕首模块”部分,
爪哇代码:
@Component(modules = NetworkModule.class)
public interface ApplicationComponent {
...
}
Run Code Online (Sandbox Code Playgroud)
用 Kotlin 编写的相同代码:
@Component(modules = [NetworkModule::class])
interface ApplicationComponent {
...
}
Run Code Online (Sandbox Code Playgroud)
这是Kotlin 1.2 中添加的仅在注释中支持的数组文字语法。您可以使用它来将事物数组传递给注释。所以[NetworkModule::class]
实际上是一个包含单个元素的数组,即NetworkModule::class
.
翻译成 Java 的 Kotlin 代码将是:
@Component(modules = { NetworkModule.class })
interface ApplicationComponent {
...
}
Run Code Online (Sandbox Code Playgroud)
只是{}
当数组中有单个元素时,Java 中可以省略括号。但是,您不能只用NetworkModule::class
Kotlin编写。您必须使用[]
, or等方式明确说明它是一个数组,arrayOf
除非它是value
参数,在这种情况下它被翻译为vararg
。
一般来说,NetworkModule.class
在Java中应该翻译成NetworkModule::class
when in an annotation。但请注意,这是类型KClass
。如果你想要一个java.lang.Class
,添加.java
.
归档时间: |
|
查看次数: |
86 次 |
最近记录: |