静态方法
Kotlin 中,我们还可以将命名对象或伴生对象中定义的函数标注为 @JvmStatic
,这样编译器既会在相应对象的类中生成静态方法,也会在对象自身中生成实例方法。
跟静态属性类似的,我们看下面的代码示例:
class Department {
...
companion object {
var innerID = "X001"
@JvmField
var innerName = "DEP"
fun getObjectName() = "ONAME"
@JvmStatic
fun getObjectID() = "OID"
}
}
编译器编译之后,反编译成的对应的Java代码:
public final class Department {
...
@JvmStatic
@NotNull
public static final String getObjectID() {
return Companion.getObjectID();
}
public static final class Companion {
...
@NotNull
public final String getObjectName() {
return "ONAME";
}
@JvmStatic
@NotNull
public final String getObjectID() {
return "OID";
}
...
}
}
在Java中调用的代码如下:
Department.Companion.getObjectID(); // OK
Department.Companion.getObjectName(); // OK, 唯一的工作方式
Department.getObjectID(); // ALSO OK
Department.getObjectName(); // ERROR
这些注解语法是编译器为了更加方便Java调用Kotlin代码提供的一些简便技巧。这样可使得Java中调用Kotlin代码更加自然优雅些。
当前内容版权归 JackChan1999 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 JackChan1999 .