Android
 Computer >> コンピューター >  >> プログラミング >> Android

Kotlinでlateinit変数が初期化されているか確認する方法

宣言後に初期化される変数は「遅延初期化変数(late initialized variable)」と呼ばれます。従来のプログラミング言語では、NULL非許容型の変数はコンストラクタ内で必ず初期化する必要がありました。しかし、開発者がうっかりNULLチェックを忘れてしまうと、プログラムエラーの原因になります。こうした問題を回避するために、Kotlinでは「lateinit」という新しい修飾子が導入されました。さらに、この変数が初期化されているかどうかを確認するためのメソッドもいくつか提供されています。

lateinitを使用するための条件

「lateinit」変数を作成するには、対象の変数に「lateinit」キーワードを付けるだけです。ただし、Kotlinで「lateinit」を使用する際には、以下の条件を満たす必要があります。

  • 「lateinit」はミュータブル(可変)な変数にのみ使用できます。つまり、「var」キーワードと組み合わせて使う必要があります。

  • 「lateinit」はNULL非許容型のデータ型にのみ許可されています。

  • 「lateinit」はプリミティブ型(Int、Doubleなど)では使用できません。

  • カスタムのgettersetterを持たないプロパティに対してのみ使用できます。

サンプルコード

この例では、変数を「lateinit」として宣言し、Kotlinのライブラリ関数を使ってその変数が初期化されているかどうかを確認します。

class Tutorial {

    lateinit var name : String

    fun checkLateInit(){
        println(this::name.isInitialized)
        // 値がまだ初期化されていないため false が出力される

        // name を初期化
        name = "www.tutorialspoint.com/"
        println(this::name.isInitialized)
        // true が返される
    }
}

fun main() {
    var obj = Tutorial()
    obj.checkLateInit()
}

実行結果

上記のコードを実行すると、以下のような出力が得られます。

false
true

2つ目のケースでは、変数nameがすでに初期化されているため、trueが返されます。このようにthis::name.isInitializedを使えば、lateinit変数へアクセスする前に安全に初期化状態をチェックでき、未初期化アクセスによるUninitializedPropertyAccessExceptionの発生を未然に防ぐことができます。

  1. Webカメラがハッキングされているか確認する5つのチェックポイントと対策法

    誰かがあなたのPCのWebカメラを勝手に操作することを「カムフェクティング(camfecting)」と呼びます。これは、信頼できる提供元からダウンロードしたつもりでインストールしたウイルスによって引き起こされることがあります。 カムフェクティングされると、相手側の人物は自由に写真や動画を撮影できてしまいます。ここでは、Webカメラがハッキングされているかどうかを見分けるためのサインを紹介します。 1. LEDライトが点滅している Webカメラがハッキングされた際によく見られる症状のひとつが、カメラ横のLEDライトの点滅です。このライトはWebカメラが動作中であることを示しています。何もしてい

  2. 私のウェブサイトはハッキングされていますか? Web サイトがハッキングされているかどうかを確認する方法

    「私のウェブサイトはハッキングされたのではないか? 」 それとも、何かおかしいことに気づいたからといって、ただ心配しているだけですか?いずれにせよ、パニックにならないでください。問題を理解しようとすることで、あなたはすでに先を行っています。 毎週、Google は 20,000 を超える Web サイトをブラックリストに登録し、50,000 の Web サイトにマルウェアのフラグを立てています。このことを考えると、セキュリティ アラートによって頭痛の種が半減したかもしれません。 ただし、まず、MalCare で WordPress サイトをスキャンして、Web サイトがハッキン