kotlin タイプセーフにプロパティの名前を取得

realmで特定のキーをもとにデータを取得するときに、ハードコーディングをしているサンプルコードを見かけます。 

サンプルとしてはハードコーディングの方が見やすかったりします。

でも、実際にアプリを作るときはタイプセーフなコーディングをした方がタイプミスによるバグの発生を抑えられたり、保守が楽になったりします。

entityクラス

data class Memo(
        var memoId: Int = 0,
        var body: String = "",
        var createDate: String? = null,
        var updateDate: String? = null
)

ハードコーディング例

    fun get(id: Int): Memo? {
        return mRealm.where(Memo::class.java).equalTo("memoId", id).findFirst()
    }
"memoId"の部分がハードコーディング(直打ち文字列入力)になっています。

タイプセーフ例

    fun get(id: Int): Memo? {
        return mRealm.where(Memo::class.java).equalTo(Memo::memoId.name, id).findFirst()
    }
"memoId"ではなく、
Memo::memoId.name
になっています。

entity名称::プロパティ名.nameとすることでタイプセーフに"memoId"(文字列)を取得できます。

bodyの場合は、Memo::body.nameですね。

 この記事が参考になれば幸いです。 

日々、プログラムを書いたり・Twitterで出来事を発信したりしています。 

Twitterのフォロワーも募集中です。
@cloverkizuna

 今後ともよろしくお願いします。