1、java调用kotlin
java
public class Client {
public static void main(String[] args) {
// MyUtilsKt.show("Derry1");
new MyUtils().show("new Derry2");
}
}
kotlin
class MyUtils {
fun show(info: String) {
println(info)
}
}
2、kotlin调用java
java
public class JavaStudent {
public static String in = "INNNNNN";
public String getString() {
return null;
}
}
kotlin
fun main() {
// 解决冲突问题
println(JavaStudent.`in`)
// 调用Java函数 String!,由于是! 你最好 var str: String ? =
// avaStudent().string.length 错误的示范 会出现nullPointException
var str: String? = JavaStudent().string
println(str?.length)
// Class java kt
showClass(JavaStudent::class.java)
showClass2(KtStudent::class)
}
// 行参里面 java
fun showClass(clazz: Class<JavaStudent>) { }
// 全部都用 kt
fun showClass2(clazz: KClass<KtStudent>) { }
3、kt 使用 Java Callback
java
public interface JavaCallback {
void show(String info);
}
kotlin
// 第一种写法
JavaManager().setCallback(JavaCallback {
println(it)
})
// 第二种写法
JavaManager().setCallback(object : JavaCallback{
override fun show(info: String?) {
println(info)
}
})
// 第三种写法
val callback = JavaCallback {
println(it)
}
JavaManager().setCallback(callback)
// 第四种写法
val callback2 = object : JavaCallback{
override fun show(info: String?) {
println(info)
}
}
JavaManager().setCallback(callback2)
4、kt 使用 kt Callback
//定义kotlin接口
interface KTCallback {
fun show(name: String)
}
// 1
KtManager().setCallback(object : KTCallback{
override fun show(name: String) {
}
})
// 2
val c = object : KTCallback{
override fun show(name: String) { }
}
KtManager().setCallback(c)
// Kt不能像Java一样的写法
/*KtManager().setCallback(KTCallback{
})*/