详细说明:https://zhuanlan.zhihu.com/p/27958831
注意事项:java 文件要放在 java 目录下
Kotlin2Java.kt
fun main() {
// controlArray()
// controlArrayVarArg()
// getJavaClass()
getJavaStaticPro()
}
fun demo(source: List<Int>) {
val list = ArrayList<Int>()
for (item in source) {
list.add(item)
}
for (i in 0..source.size - 1) {
list[i] = source[i]
}
source.forEach {
list.add(it)
}
}
fun controlArray() {
val javaObj = JavaArrayExample()
val array = intArrayOf(0,1,2,3)
println("controlArray: ${array.size}")
javaObj.removeIndices(array)
}
fun controlArrayVarArg() {
val javaObj = JavaArrayExample()
val array = intArrayOf(0,1,2,3)
println("controlArrayVarArg: ${array.size}")
javaObj.removeIndicesVarArg(*array)
}
fun getJavaClass() {
val clazz = JavaArrayExample::class.java
val javaObj = JavaArrayExample()
val clazz2 = javaObj.javaClass
println("clazz: ${clazz.name} ${clazz.`package`} clazz2: ${clazz2.name} ${clazz2.`package`}")
}
fun getJavaStaticPro() {
val staticVal = JavaArrayExample.STATIC_VAL
println("staticVal: ${staticVal}")
}
//external fun getValFromJNI(): Int {
// return 0
//}
Java2Kotlin.java
public class Java2Kotlin {
public static void main(String[] args) {
// Kotlin 属性交互
KotlinClass kotlinClass = new KotlinClass();
kotlinClass.getName();
kotlinClass.setName("newName");
kotlinClass.isOpen();
kotlinClass.setOpen(true);
// 包级函数
// KotlinClassKt.kotlinFun();
KotlinClassUtils.kotlinFun();
// 获取 Kotlin 实例字段
int kotlinID = kotlinClass.ID;
System.out.println("kotlinID: " + kotlinID);
// 获取 Kotlin 静态字段
String kotlinStaticVal = KotlinClass.TAG;
System.out.println("kotlinStaticVal: " + kotlinStaticVal);
// 获取 Kotlin 对象、伴生对象
// Singleton.properties = new Properties();
// String mValue = Singleton.properties.getProperty("mKey");
// System.out.println("mValue: " + mValue);
Singleton.objStaticFunc();
Singleton.INSTANCE.objInstanceFunc();
// 使用 Kotlin 静态方法
KotlinClass.staticFunc();
KotlinClass.Companion.instanceFunc();
// KClass
KClass<KotlinClass> kClass = JvmClassMappingKt.getKotlinClass(KotlinClass.class);
String kClassName = kClass.getSimpleName();
System.out.println("kClassName: " + kClassName);
// Java 调用 Kotlin 带异常的方法
try {
KotlinClassUtils.kotlinFunException();
} catch (IOException e) {
e.printStackTrace();
}
}
}