マニュアル: Immutables

投稿日: 更新日:

設定

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'
}

使い方

  1. abstractクラスまたはinterfaceに@Value.Immutable(org.immutables.value.Value)を付ける
  2. getterを定義する
    • インタフェースの場合、defaultメソッドは何も影響ありません。
  3. Annotation Processorを実行する。ValueObjectを自動生成する。

作成されたクラスについて

デフォルトでは以下のようになります。

  • クラス名: Immutable + 「元のクラス名」
  • コンストラクタはprivate
  • インスタンスメソッド
    • getter
    • with + getterで、元のValueObjectから新しいValueObjectを作る
  • Objectで定義されているメソッド
    • equals: 自動生成。それぞれのフィールドが同じ場合にtrue
    • hashCode: 自動生成
    • toString: 自動生成
  • staticメソッド
    • copyOf: 元のオブジェクトをコピー
  • builder
    • ImmutableXXX.builder()でビルダを返す
    • from: 別のインスタンスを起点
    • setter
    • build()

  1. How do I get IntelliJ to recognize gradle generated sources dir? - Help/Discuss - Gradle Forums

  2. Output path intersects with source root warning – IDEs Support (IntelliJ Platform) | JetBrains