@JvmName
定义kotlin
@file:JvmName("Stu")//不可以放在包的下面
package com.xsb.cgproject.ui.kt2
fun showStr(string: String) = println(string)
java调用
public class Kt38Java {
public static void main(String[] args) {
//未使用@JvmName注解
K36Kt.showStr("测试陈楠楠楠楠!!!");
//使用@JvmName注解
Stu.showStr("测试陈楠楠楠楠");
}
}
@JvmField
定义kotlin
class K37 {
@JvmField
val name = listOf("张三", "李四")
}
java调用
public class Kt37Java {
public static void main(String[] args) {
K37 k37 = new K37();
//没有使用 @JvmField
for (String s : k37.getName()) {
System.out.println(s);
}
//使用 @JvmField
for (String s : k37.name) {
System.out.println(s);
}
}
}
@JvmOverloads
定义kotlin
fun toast(name: String, age: Int = 22) {
println("${name}+${age}")
}
java调用
public class Kt39Java {
public static void main(String[] args) {
//未使用 @JvmOverloads 会编译错误,必须传两个参数
Kt39Kt.toast("杀杀杀");
//使用 @JvmOverloads 不报错,传一个name即可
Kt39Kt.toast("杀杀杀");
}
}
@JvmStatic
定义kotlin
class Kt40 {
companion object {
@JvmField
val name = "SSSS"
@JvmStatic
fun show() {
println(name)
}
}
}
java调用
public class Kt40Java {
public static void main(String[] args) {
//未使用 @JvmField
System.out.println(Kt40.Companion.getName());
//未使用 @JvmStatic
Kt40.Companion.show();
//使用 @JvmField
System.out.println(Kt40.name);
//使用 @JvmStatic
Kt40.show();
}
}