私は、JavaコードをライブラリからKotlinに変換しているときに、Javaコードでnullチェックが行われていて、これをどのように変換するのが最適か疑問に思う。Kotlin null from Java
Javaがオブジェクトをnullにするかどうかを制御できないため、私はまだKotlinでif nullチェックが必要ですか?
は、私がこのようにこれを定義する必要があります。..
private lateinit var mCameraDevice: CameraDevice
、その後、ヌルチェックは必要ありませんか、次のようにバックヌルのJava
から来ることができましたCameraDeviceを考えてみましょう。..
private var mCameraDevice: CameraDevice? = null
、その後はnullチェックを保つ
if (mCameraDevice != null) { // do something }
nullを処理する必要はないはずなので、オプション1を使用する必要がありますが、基本的にはすべてのライブラリがJavaなので、nullを処理してオプション2にする必要があるので、KotlinでのNullabilityは私を混乱させます
すべてのタイプが技術的にnull可能であるという理由だけで、実行時にそれらが実際に実行されているわけではありません。あなたの設計がmCameraDeviceがおそらくヌルにならないことを保証している場合(とにかく修正が必要なバグがない限り)、CameraDeviceを使用してください。 nullがmCameraDeviceの有効な値であれば、CameraDevice?を使用します。 CameraDeviceがJavaクラスでもKotlinクラスでも、何も変更されません。 –
JavaライブラリのコードまたはJavaDocがnullでないことが保証されている場合を除き、Java相互運用部分にはnull可能な型を使用する必要があります。 – Naetmul