Slide 1

Slide 1 text

使ってみようLombok 吉田貴文(@zephiransas)/岡山Javaユーザ会

Slide 2

Slide 2 text

Lombokとは? • Javaでよくあるコードを自動生成するライブラリ • コンパイル時にクラスを書き換える • アノテーションで指定

Slide 3

Slide 3 text

Lombokでできること • アクセサの生成 • equals,toString,hashCodeの生成 • コンストラクタの生成 • Nullチェック • 型推論

Slide 4

Slide 4 text

Lombokの仕組み IDE Java ファイル Compiler Class ファイル Lombok Lombok 自動生成したとみなす プラグイン Classファイルを 書き換える

Slide 5

Slide 5 text

IDEへインストール • Eclipse • lombok.jarをダブルクリック • IntelliJ IDEA • プラグインをインストール • NetBeans

Slide 6

Slide 6 text

Eclipse • lombok.jarをダブルクリック

Slide 7

Slide 7 text

IntelliJ IDEA

Slide 8

Slide 8 text

IntelliJ IDEA

Slide 9

Slide 9 text

NetBeans • プロジェクトのプロパティから設定

Slide 10

Slide 10 text

Mavenの設定 org.projectlombok lombok 1.14.8 provided http://www.coppermine.jp/docs/programming/2014/01/lombok.html

Slide 11

Slide 11 text

@Getter,@Setter

Slide 12

Slide 12 text

public class Student { private Long id; private String name; private String email; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }

Slide 13

Slide 13 text

@Setter @Getter public class Student { private Long id; private String name; private String email; }

Slide 14

Slide 14 text

@ToString

Slide 15

Slide 15 text

public class Student { private Long id; private String name; private String email; public String toString() { return “Student(id=” + this.id + “, name=” + this.name + “, email=” + this.email; } }

Slide 16

Slide 16 text

@ToString public class Student { private Long id; private String name; private String email; }

Slide 17

Slide 17 text

@Data • クラスに付与 • @Setter,@Getter,@ToString • @EqualsAndHashCode • equalsメソッドとhashCodeメソッドを生成 • 一般的なJavaBeanであれば、これだけで良い

Slide 18

Slide 18 text

@NonNull

Slide 19

Slide 19 text

@Getter @Setter public class Student { public Student(String name, String email) { if(name == null) { throw new NullPointerException("name"); } this.name = name; this.email = email; } private Long id; private String name; private String email; }

Slide 20

Slide 20 text

public class Student { public Student(@NonNull String name, String email) { this.name = name; this.email = email; } private Long id; private String name; private String email; }

Slide 21

Slide 21 text

val

Slide 22

Slide 22 text

Student student = new Student(); ͜͜ʹܕ৘ใ͕͋Δ ͜͜ʹ΋ܕ৘ใ͕͋Δɾɾɾ

Slide 23

Slide 23 text

val student = new Student(); ӈล͔Βܕ৘ใΛਪ࿦͢Δ

Slide 24

Slide 24 text

val lists = new ArrayList(); ɾɾɾ Student student = lists.get(0); 4UVEFOUܕ͕औಘͰ͖Δ

Slide 25

Slide 25 text

valは便利なようだが まだ問題も多い・・・

Slide 26

Slide 26 text

ただしEclipseのみ

Slide 27

Slide 27 text

大事なことなので もう一度

Slide 28

Slide 28 text

Eclipseのみ

Slide 29

Slide 29 text

それScalaで・・・

Slide 30

Slide 30 text

まとめ • よくあるコードは書かないようにしよう • アクセサはIDEの生成でよくね? • ToStringやequalsとか修正面倒 • 余計なコードがないのでカバレッジがよくなる • valがステキ • しかしEclipseェ・・・

Slide 31

Slide 31 text

使ってみようLombok 吉田貴文(@zephiransas)/岡山Javaユーザ会