狠狠撸
Submit Search
尝辞尘产辞办のススメ
?
3 likes
?
1,310 views
なべ
Follow
尝辞尘产辞办の简単な使い方
Read less
Read more
1 of 21
Download now
Downloaded 13 times
More Related Content
尝辞尘产辞办のススメ
2.
アジェンダ ? はじめに ? Javaの冗長コード ?
Lombokを使った冗長コードの排除 ? Lombokを使ってBuilderを追加 ? Maven依存関係 ? IntelliJのPlugin ? まとめ
3.
はじめに ? ここでは、Javaの冗長コードを排除するLombokを説明する https://projectlombok.org/
4.
Javaの冗長コード ? Javaの昔から抱える問題に「冗長コード」がある。 たとえば、以下のようなフィールドがあったとする。 /** productテーブルのEntity
*/ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; } フィールド宣言はprivateが原則
5.
Javaの冗長コード (1つ目) ? フィールドはprivate宣言が原則なので、 そのフィールドにアクセスするsetter/getterを書くのが冗長。 /**
productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** 商品コードの取得 */ public Integer getProductCode() { return productCode } /** 商品コードの設定 */ public void setProductCode(Integer productCode ) { this.productCode = productCode } } フィールドごとに setter/getterを書く
6.
Javaの冗長コード (2つ目) ? コンストラクタを書くのが冗長。 /**
productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** デフォルトコンストラクタ */ public Product() { } /** フィールド初期化をするコンストラクタ */ public Product(Integer productCode, String productName) { this.productCode = productCode; this.productName = productName; } } デフォルトコンストラクタ以外に、 フィールド初期化用コンストラクタを書く
7.
Javaの冗長コード (3つ目) ? クラスの文字列表現を返すtoStringメソッドを書くのが冗長。 /**
productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** クラスの文字列表現 */ public String toString() { StringBuilder sb = new StringBuilder(); sb.append(“productCode:”).append(productCode); sb.append(“ productName:”).append(productName); return sb.toString(); } } フィールドの内容を 文字列にして返却する
8.
Javaの冗長コード (4つ目) ? 各フィールドが等価かを返すequalsメソッドを書くのが冗長。 /**
productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** 等価かを返す */ public boolean equals(Object o) { if (!(o instanceof Product)) { return false; } Product p = (Product)o; if ((this.productCode != null && p.productCode == null) || (this.productCode == null && p.productCode != null) || ??? 以下略 同じクラスかのチェック フィールド1つずつ、 nullチェック、値チェックをする
9.
Javaの冗長コード (5つ目) ? 各フィールドの値に応じたハッシュ値を返す hashCodeメソッドを書くのが冗長。 /**
productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** ハッシュ価を返す */ public int hashCode() { ??? 以下略
10.
Lombokを使った冗長コードの排除 ? これら冗長コードを、Lombokを使って排除する。 /** productテーブルのEntity
*/ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; }
11.
Lombokを使った冗長コードの排除 ? getter/setter、toString、 equals、hashCodeメソッドの追加 /** productテーブルのEntity
*/ @Data public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; } @Dataアノテーションを付ける
12.
Lombokを使った冗長コードの排除 ? デフォルトコンストラクタの追加 /** productテーブルのEntity
*/ @Data @NoArgsConstructor public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; } @NoArgsConstructor アノテーションを付ける
13.
Lombokを使った冗長コードの排除 ? フィールド初期化用コンストラクタの追加 /** productテーブルのEntity
*/ @Data @NoArgsConstructor @AllArgsConstructor public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; } @ AllArgsConstructor アノテーションを付ける
14.
Lombokを使った冗長コードの排除 ? 以上 /** productテーブルのEntity
*/ @Data @NoArgsConstructor @AllArgsConstructor public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; }
15.
Lombokを使ってBuilderを追加 ? Bulderを追加する。 /** productテーブルのEntity
*/ @Data @NoArgsConstructor @AllArgsConstructor @Builder public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; }
16.
Lombokを使ってBuilderを追加 ? Bulderを使う。 Product product
= Product.builder() .productCode(1) .productName(“ガム”) .build(); 任意のフィールドのみを初期化した インスタンスを作成できる
17.
Maven依存関係 ? Maven依存関係に下記を追加する。 <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.14.0</version> <scope>provided</scope> </dependency> </dependencies>
18.
IntelliJのPlugin ? IntelliJのPluginを追加する。 設定画面を開いて 「Plugins」を選択 キーワードに 「lombok」を入力 リストに出ない場合は 「Browse」をクリック
19.
IntelliJのPlugin ? IntelliJのPluginを追加する。 「Lombok Plugin」を選択 ダウンロードと インストールをする
20.
IntelliJのPlugin ? IntelliJのPluginを追加する。 IntelliJを 再起動して完了
21.
まとめ ? Lombokを使って定型的なコードをなるべく排除し、 それで浮いた時間を使って本来やるべき実装に集中しましょう。
Download