Kotlin注解之 JvmMultifileClass

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

猜你喜欢

转载自blog.csdn.net/zhangying1994/article/details/109136742