10

私は Kotlin が初めてで、小さな Java プロジェクトをこの新しい言語に作り直そうとしています。プロジェクトでmongodbを使用しており、次のようなクラスがあります。

class PlayerEntity {

  constructor() {} //for mongodb to create an instance

  constructor(id: ObjectId, name: String) { //used in code
    this.id = id
    this.name = name
  }

  @org.mongodb.morphia.annotations.Id
  var id: ObjectId? = null

  var name: String? = null
}

空のコンストラクターのため、idフィールドを nullable ( ) としてマークする必要があります。var id: ObjectId?別のクラスからこのフィールドにアクセスしようとすると、null 以外の check: を使用する必要がありますthePlayer.id!!。しかし、私のアプリケーションのロジックは、idフィールドが null になることはありません (mongo は Player のインスタンスを作成し、すぐに id フィールドを設定します)。そして、どこでもnull以外のチェックをしたくありません。

null 以外のゲッターを作成しようとしましたが、コンパイルされません。

var id: ObjectId? = null
    get(): ObjectId = id!!

id のスタブを作成してコンストラクターで使用することもできますが、これは汚いハックのように見えます。

val DUMMY_ID = new ObjectId("000000000000000000000000");

問題を解決するための回避策はありますか?

4

1 に答える 1