本文是既 JvmName 注解在 Kotlin 中的应用 和JvmMultifile 注解在 Kotlin 中的应用 的第三篇关于 Kotlin的注解文章。
介绍的内容比较简单,主要是包含了JvmField和JvmStatic两个。
@JvmField
示例代码声明
1
2
3
package com.example.jvmannotationsample
class Developer ( @JvmField val name : String , val ide : String )
使用@JvmField,我们在Java中调用的时候,可以直接使用属性名,而不是对应的getter方法。
调用代码对比
1
2
3
4
//test jvmField
Developer developer = new Developer ( "Andy" , "Android Studio" );
System . out . println ( developer . getIde ()); // not using JvmField
System . out . println ( developer . name ); // using JvmField
@JvmStatic
除此之外,对于静态属性和静态方法的实现,我们也可以使用@JvmStatic实现,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.example.jvmannotationsample
class Sample {
companion object {
@JvmStatic
val TAG_NAME = "Sample"
val NON_STATIC_VALUE = "non_static_value"
@JvmStatic fun callStatic () {
}
fun callNonStatic () {
}
}
}
调用代码如下
1
2
3
4
5
6
//JVM static method
Sample . callStatic ();
Sample . Companion . callNonStatic ();
Sample . getTAG_NAME ();
Sample . Companion . getNON_STATIC_VALUE ();
Companion
Kotlin中我们可以借助object
实现静态的形式,比如下面的代码
1
2
3
4
5
6
7
8
9
package com.example.jvmannotationsample
class SomeClass {
companion object {
fun getCommonProperties (): List < String > {
return emptyList ()
}
}
}
其实除此之外,我们还能命名companion的名称,如下代码
1
2
3
4
5
6
7
8
9
package com.example.jvmannotationsample
class AnotherClass {
companion object Assistant {
fun scheduleSomething () {
}
}
}
调用代码示例
1
2
3
//test companion
SomeClass . Companion . getCommonProperties ();
AnotherClass . Assistant . scheduleSomething ();
相关文章推荐