Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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ユーザ会