小白笔记(完结)
1.@file:JvmName()与@JvmName()
kotlin端
@file:JvmName("StuString") //作用在顶级作用域,改变类的名称 必须写在包名之外
package sixcontent
@JvmName("showJvm") //作用在方法上,改变方法的方法名
fun method(){}
Java端
public class Test01Java {
public static void main(String[] args) {
//使用时候用更改后的名称
StuString.showJvm();
}
}
2.@JvmField
class Test02 {
//@NotNull
// private final String name = "小白子";
//
// @NotNull
// public final String getName() {
// return this.name;
// }
@JvmField
val name:String="小白子"
//加注解之后成员属性由一个私有属性变为了公共成员属性
//@JvmField
// @NotNull
// public final String name = "小白子";
}
3.@JvmOverloads
kotlin端
class Test03 {
//默认参数
fun showMethod(name:String,age:Int=20,sex:Char='男'){ println("$name,$age,$sex")}
@JvmOverloads //原理: 编译器环节 专门重载一个函数,专门给Java用,使得Java可以使用KT中的默认参数
fun showMethod1(name:String,age:Int=20,sex:Char='男'){ println("$name,$age,$sex")}
}
Java端
public class Test03Java {
public static void main(String[] args) {
Test03 test03=new Test03();
//test03.showMethod("小白"); 报错 没有加注解,Java不能使用KT中的默认参数
test03.showMethod1("小白"); //加注解后,Java可以使用KT中的默认参数
}
}
4.@JvmStatic
kotlin端
class Test04 {
companion object{
@JvmStatic //在Test04类内封装一个方法来调用静态Companion中的showAction方法 提供给Java使用
fun showAction(name:String)= println("$name")
}
}
Java端
public class Test04Java {
public static void main(String[] args) {
Test04.showAction("名字");
}
}