に関する学習
@ jvmmultifileClassは何ですか?
JvmMultiFileClass注釈は次のように記述されます.
Instructs the Kotlin compiler to generate a multifile class with top-level functions and properties declared in this file as one of its parts. Name of the corresponding multifile class is provided by the JvmName annotation.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-multifile-class/
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-name/
分解しましょう
utilsを作成します.そして、fooメソッドを定義します.fooメソッドはfooを出力します.
// Utils.kt
fun foo() {
println("foo")
}
復元されると、このようになります.// Utils.decompiled.java
public final class UtilsKt {
public static final void foo() {
String var0 = "foo";
boolean var1 = false;
System.out.println(var0);
}
}
@ jvmnameと@ jvmmultifileClassを加えましょう.// Utils.kt
@file:JvmName("NewUtils")
@file:JvmMultifileClass
fun foo() {
println("foo")
}
分解しましょう.@ jvmnameアノテーションにnewutilsを指定し、newutilsクラスを生成しました.また、ファサードクラス(newutilsshrum utilskt)が生成されている.// Utils.decompiled.java
public final class NewUtils {
public static final void foo() {
NewUtils__UtilsKt.foo();
}
}
final class NewUtils__UtilsKt {
public static final void foo() {
String var0 = "foo";
boolean var1 = false;
System.out.println(var0);
}
}
指定した場合@file: JvmName("NewUtils")
複数のファイルを出力すると、次のエラーが発生します.Duplicate JVM class name 'NewUtils' generated from: package-fragment, package-fragment
これは@ jvmmultifileclassを追加することで解決できますJvmMultiFileClass注釈は、ファサードクラスを生成して整理するために使用できます.Reference
この問題について(に関する学習), 我々は、より多くの情報をここで見つけました https://dev.to/tommykw/learning-about-jvmmultifileclass-4e88テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol