JavaファイルをKotlinファイルに変換した後、クラスファイルにコンパイルしました。結果のクラスは元のJavaクラスファイルよりも大きいです。 Kotlinクラスファイルでは、すべてのクラスでメタデータが見つかりました。なぜKotlinはこのメタデータを保存しますか?なぜKotlinはMetaDataをKotlinクラスファイルに保持していますか?
1
A
答えて
1
Kotlinのコードのいくつかは、純粋なJavaバイトコード(例えば、NULL値可否、一次コンストラクタ、internal
可視性、lateinit
修飾子、プロパティ委譲など)で表現することはできません。代わりに、それらはシリアライズされ、メタデータとしてクラスに格納されます。
KotlinライブラリのJARディストリビューションを使用する場合、コンパイラはこれらのKotlin固有属性を検出するためにメタデータを解析し、利用可能なすべての機能を持つKotlinアーティファクトとしてライブラリを使用します。
実行時に、これらの属性を再構成して反映させるために、KotlinリフレクションAPIのkotlin-reflect
がメタデータを使用します。
+0
ありがとうございました! googleの提案として、kotlinはAndroid開発のより多くの人口になるだろう。しかし、kotlinクラスファイルのサイズは、通常のJavaクラスファイルのサイズの約2倍です。したがって、kotlin apkはますます大きくなります。私はJetbrainsとGoogleにそれを修正する方法を知らない。 @hotkey – TonyChou
関連する問題
- 1. Kotlin - 断続的な「不正なクラスファイル」エラー
- 2. Kotlin - 私は、次のKotlin機能を持っている
- 3. なぜKotlinにクラスを持たないvarを定義できますか?
- 4. Kotlin拡張子をクラスファイルに配置する方法は?
- 5. Kotlinに並行性キーワードがないのはなぜですか?
- 6. Javaは、Kotlinの基本変数にアクセスできますが、Kotlinではできません。なぜですか?
- 7. Kotlinはので、私は依存してgradle.buildにKotlinを追加
- 8. なぜKotlinは試してみて、例えば、明示的に
- 9. kotlinに変換されたjavaクラスファイルがコンパイルエラーを起こす
- 10. Kotlinが次のラムダ引数を推論できないのはなぜですか(Java - > Kotlin変換後)?
- 11. KotlinはkotlinのREPLでJSON
- 12. 私はkotlinソースコードでkotlin
- 13. 私は次のリストを持ってKotlin
- 14. なぜ私はKotlinの新しい行に{匿名のクラスの?
- 15. 私はkotlinでのLinkedListにリストを変換しようとしているkotlin
- 16. なぜvar iはKotlinで0で始まるのですか?
- 17. は、どのように私はスーパークラスを持っているkotlin
- 18. SupportfragmentManagerはnullになりますandroid kotlin
- 19. Kotlinジェネリック:Kotlinは正しい継承と私のクラスを認識しません
- 20. kotlinでインターフェイスを委任できるのはなぜですか?
- 21. はkotlin
- 22. はKotlin
- 23. はKotlin
- 24. なぜアプリはKotlinのAndroid 4.xで動作しないのですか?
- 25. Kotlinは追加のセキュリティを提供していますか?
- 26. Kotlinはコレクションインターフェイスの実装を提供していますか?
- 27. Kotlinのルームデータベースで何が問題になっていますか?
- 28. kotlinの変数にラムダを保存
- 29. なぜ `Intrinsics.checkParameterIsNotNull`がインライン化されていないのですか? Kotlinで
- 30. KotlinのEnums With With Kotlin
[kotlin.MetaDataに保持されているデータの形式はどこに文書化されていますか?](https://stackoverflow.com/questions/36816521/is-the-format-of-the-data-held-in -kotlin-metadata-documentsed-anywhere) –
ありがとうございます。しかし、私はまだMeatadataが実行時に役立つかどうか疑問に思います。@ PixelElephant – TonyChou