Kotlin+SpringBootでWebアプリを作ってみる その1.1
lateinit
昨日、Kotlin+SpringBootでWebアプリを作ってみる その1を投稿してから30分くらいでこんなツイートが。
lateinit使ってみてほしい/
— やんく (@yy_yank) March 28, 2016
Kotlin+SpringBootでWebアプリを作ってみる 1 - a fledgling https://t.co/Aia0nnSdZE
やんくさんや… てか早い。
ということでlateinit
で書き換えてみる。
Book.kt
package book.application.domain import javax.persistence.* /** * bookテーブルのEntity. */ @Entity @Table(name = "book") class Book() { @Id @GeneratedValue var id: Long? = null private set @Column(nullable = false) lateinit var title: String private set @Column var subTitle: String? = null private set @Column(nullable = false) lateinit var leadingSentence: String private set @Column(nullable = false) lateinit var imagePath: String private set @Column(nullable = false) lateinit var url: String private set /** * セカンダリコンストラクタ * @param id 主キー * @param title 書籍名 * @param subTitle 書籍の副題 ない場合はnull * @param leadingSentence リード文 * @param url リンク先URLパス */ constructor(id: Long? = null, title: String, subTitle: String? = null, leadingSentence: String, imagePath: String, url: String) : this(){ this.id = id this.title = title this.subTitle = subTitle this.leadingSentence = leadingSentence this.imagePath = imagePath this.url = url } }
んー、こうかな?
プリミティブ型、nullable
はlateinit
できないから普通にプロパティを書いた。
こっちの方がgetter, setter
のアクセス制御ができるのでいいですね。カスタムは持てないようですが。
所感
上記のコードでは、id
とsubTitle
のプロパティ定義が微妙な感じがしますが、lateinit
を使う方が良さそうな感じです。
微妙なところはもっと勉強しないと。
それにしても、稚拙でも書いて公開してみるものですね。
まさかフォローしてる方に読んでもらえて軽くコメントしてもらえるとは...!
P.S
4/2(土)Kotlin 1.0リリース勉強会 in 京都 に参加します。
Kotlin初心者なりに学んだこと、感じたことを書こうと思っています。