設定
IntelliJ IDEAでAnnotation Processorsを使用する方法参照。
build.gradleには以下の設定を入れてください。
dependencies {
compileOnly "org.immutables:value:2.5.6"
}
以下の方が正しいらしいですが、IntelliJ IDEAでうまく解釈できませんでした。
dependencies {
annotationProcessor 'org.immutables:value-processor:2.5.6'
compile 'org.immutables:value:2.5.6:annotations'
}
使い方
- abstractクラスまたはinterfaceに
@Value.Immutable
(org.immutables.value.Value)を付ける - getterを定義する
- インタフェースの場合、
default
メソッドは何も影響ありません。
- インタフェースの場合、
- Annotation Processorを実行する。ValueObjectを自動生成する。
作成されたクラスについて
デフォルトでは以下のようになります。
- クラス名:
Immutable
+ 「元のクラス名」 - コンストラクタはprivate
- インスタンスメソッド
- getter
- with + getterで、元のValueObjectから新しいValueObjectを作る
- Objectで定義されているメソッド
- equals: 自動生成。それぞれのフィールドが同じ場合にtrue
- hashCode: 自動生成
- toString: 自動生成
- staticメソッド
- copyOf: 元のオブジェクトをコピー
- builder
- ImmutableXXX.builder()でビルダを返す
- from: 別のインスタンスを起点
- setter
- build()