JvmMultifileClass的作用是可以将多个个kt文件里面的代码合并到一个Javaclass文件中。
文件TestAnotionFunA.kt
@file:JvmName("CommonUtils")
@file:JvmMultifileClass
package com.example.annotation
fun functionA() {
}
文件TestAnotionFunB.kt
@file:JvmName("CommonUtils")
@file:JvmMultifileClass
package com.example.annotation
fun functionB() {
}
TestAnotionFunA.kt转换成Java
final class CommonUtils__TestAnotionFunAKt {
public static final void functionA() {
}
}
public final class CommonUtils {
public static final void functionA() {
CommonUtils__TestAnotionFunAKt.functionA();
}
}
TestAnotionFunB.kt转换成Java
final class CommonUtils__TestAnotionFunBKt {
public static final void functionB() {
}
}
public final class CommonUtils {
public static final void functionB() {
CommonUtils__TestAnotionFunBKt.functionB();
}
}
java中调用
CommonUtils.functionA();
CommonUtils.functionB();
如果不使用JvmMultifileClass,编译会报错。
Duplicate JVM class name 'com/example/annotation/CommonUtils' generated from: package-fragment com.example.annotation, package-fragment com.example.annotation