は、我々は、JavaにいくつかKotlinのバイトコードをコンパイルすると、私たちは多くの場合はnullチェックを行い、この文を見ることができます:なぜ `Intrinsics.checkParameterIsNotNull`がインライン化されていないのですか? Kotlinで
Intrinsics.checkParameterIsNotNull(foo, "foo")
我々はfurthurを探索した場合、我々はこの方法の逆コンパイル実装を見ることができ、それは実装のありますこれによってクラス(Intrinsics
)のexistenseに
public static void checkParameterIsNotNull(Object value, String paramName) {
if (value == null) {
throwParameterIsNullException(paramName);
}
}
、私はそれが自動的に、私はSTDLIBから関数を使用しないように自分のベストを試みた場合でも、STDLIBなしKotlinを使用することはできません:それは名前だとまったく同じIntrinsics.checkParameterIsNotNull
への呼び出しを生成します。
このメソッドの実装は非常に短いため(非常に頻繁に表示されます)、なぜこの関数はインライン化されていませんか?
Kotlinコンパイラがこのヌルチェックを生成しないようにするための注釈がありますか? (@TrustedNotNull
のようなもの)
ProGuardの場合:私は共有ライブラリに取り組んでいるため、ProGuardは私には適していないと心配しています。私は明らかにこれらのコード除去ツール(ProGuard、dce-js)を知っており、いつどのようにそれらを使用するかを知っています。
私はちょうどなぜ機能がインライン化されていないのか尋ねています。
あなたの目標が瓶のサイズを減らすことであるならば、Proguardはあなたの親友です。 –