kotlin数据类的调用
kotlin代码:
package com.tianfu.kotlin
/**
* age成员使用注解不能有get和set方法,只能直接赋值,不能声明private
*/
data class Person(var name:String,@JvmField var age:Int)
java代码
import com.tianfu.kotlin.Person;
public class PersonMain {
public static void main(String[] args) {
Person person=new Person("Andy",27);
System.out.println(person.getName()+" is "+person.age);//此处age没有get和set方法
person.setName("Boby");
person.age=37;
System.out.println(person.getName()+" is "+person.age);
// person.setName(null);此处不能置空,运行会报错
}
}
结果:
Kotlin中object单利模式类的调用
kotlin代码:
package com.tianfu.kotlin
object Singleton {
fun syhello(){
println("秦时明月之沧海横流")
}
}
java代码
import com.tianfu.kotlin.Singleton;
public class AccessToObject {
public static void main(String[] args) {
Singleton.INSTANCE.syhello();
}
}
Kotlin中file类的调用
kotlin代码
package com.tianfu.kotlin
/**
* kotlinFile中编译会把File编译成对应的class
*/
fun printHello(){
println("沧海横流,方显英雄本色")
}
fun main(args: Array<String>) {
printHello()
}
Java代码的调用
import com.tianfu.kotlin.PackageKt;
public class CallPackageMethod {
public static void main(String[] args) {
PackageKt.printHello();//将package的kotlinfile编译成class,然后调方法
}
}
jvm注解的调用,灵活传参
kotlin注解代码
package com.tianfu.kotlin
class OverLoads {
@JvmOverloads//添加此注释方法参数会有默认值,不否则三个参数在java中都要传
fun overloaded(a:Int,b:Int=0,c:Int=1){
println("$a,$b,$c")
}
}
Java调用代码
import com.tianfu.kotlin.OverLoads;
public class AccessToOverLoads {
public static void main(String[] args) {
OverLoads overLoads=new OverLoads();
overLoads.overloaded(10,11,12);//带三个参数的方法
overLoads.overloaded(13);//b,c使用默认值
overLoads.overloaded(12,13);//c使用默认值
}
}
String字符串判空的调用
kotlin代码
package com.tianfu.kotlin
fun String.notEmpty():Boolean{//没有参数
return this !=""
}
Java代码实现判空,直接传参
import com.tianfu.kotlin.ExtensionMethodKt;
public class CallExtensionMethod {
public static void main(String[] args) {
System.out.println(ExtensionMethodKt.notEmpty("天青色等烟雨"));
}
// 结果:true
}