是否可以写出相当于Java的东西
interface Foo {
public static final INSTANCE = new Foo {};
}
Run Code Online (Sandbox Code Playgroud)
在科特林?
如果Foo是一堂课,我可以使用:
class Foo {
companion object {
@JvmField
val INSTANCE = object : Foo() {}
}
}
Run Code Online (Sandbox Code Playgroud)
但使用接口时会出现错误:
JvmField 不能应用于接口的伴生对象中定义的属性
@JvmStatic也不行。
从 Kotlin 1.3 开始,您可以执行以下操作:
interface Foo {
companion object {
@JvmField val INSTANCE = object : Foo {}
}
}
Run Code Online (Sandbox Code Playgroud)
并从 Java 中将其称为Foo.INSTANCE.
| 归档时间: |
|
| 查看次数: |
5015 次 |
| 最近记录: |