Upgrade to Pro — share decks privately, control downloads, hide ads and more …

使ってみようLombok

 使ってみようLombok

合同勉強会 in 大都会岡山 -2014 Winter-

Ab963de01b53e635d6e699d6d7d162b1?s=128

Takafumi Yoshida

December 13, 2014
Tweet

Transcript

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

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

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

    型推論
  4. Lombokの仕組み IDE Java ファイル Compiler Class ファイル Lombok Lombok 自動生成したとみなす

    プラグイン Classファイルを 書き換える
  5. IDEへインストール • Eclipse • lombok.jarをダブルクリック • IntelliJ IDEA • プラグインをインストール

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

  7. IntelliJ IDEA

  8. IntelliJ IDEA

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

  10. Mavenの設定 <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.14.8</version> <scope>provided</scope> </dependency> </dependencies> http://www.coppermine.jp/docs/programming/2014/01/lombok.html

  11. @Getter,@Setter

  12. 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; } }
  13. @Setter @Getter public class Student { private Long id; private

    String name; private String email; }
  14. @ToString

  15. 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; } }
  16. @ToString public class Student { private Long id; private String

    name; private String email; }
  17. @Data • クラスに付与 • @Setter,@Getter,@ToString • @EqualsAndHashCode • equalsメソッドとhashCodeメソッドを生成 •

    一般的なJavaBeanであれば、これだけで良い
  18. @NonNull

  19. @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; }
  20. 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; }
  21. val

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

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

  24. val lists = new ArrayList<Student>(); ɾɾɾ Student student = lists.get(0);

    4UVEFOUܕ͕औಘͰ͖Δ
  25. valは便利なようだが まだ問題も多い・・・

  26. ただしEclipseのみ

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

  28. Eclipseのみ

  29. それScalaで・・・

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

    valがステキ • しかしEclipseェ・・・
  31. 使ってみようLombok 吉田貴文(@zephiransas)/岡山Javaユーザ会