小ネタ。
Kotlinで、プライマリコンストラクタに @JvmOverloads
アノテーションを付ける方法を知らないメンバーがいたのでメモ。
状況
多いのは以下のような data class
。
data class DataClass(...)
と書かれている場合、 @JvmOverloads
は constructor
にしか付与できないため、このままでは記述できない。
対応
class DataClass(...)
は class DataClass constructor(...)
の省略形なので、以下のように constructor
を明示し、それにアノテーションを付与してやればいい。
data class DataClass @JvmOverloads constructor(...)
振り返り
3か月くらいKotlinとJavaが混じった環境でコードを書いているが、Javaとの相互運用を考えると、Kotlinオンリーの環境でなければ @JvmOverloads
はコンストラクタには必須にしておくほうがよさそう。