Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
使ってみようLombok
Search
Takafumi Yoshida
December 13, 2014
Technology
0
230
使ってみようLombok
合同勉強会 in 大都会岡山 -2014 Winter-
Takafumi Yoshida
December 13, 2014
Tweet
Share
More Decks by Takafumi Yoshida
See All by Takafumi Yoshida
ECSとSQSでスケーラブルなバッチを作った
zephiransas
2
980
DynamoDB Step Zero to One
zephiransas
0
550
ECSとALBで始めるblue/greenデプロイメント
zephiransas
2
280
DynamoDB関連のアップデート紹介 #reinvent2018
zephiransas
0
640
CloudGarageでGitBucketサーバをたててみた
zephiransas
0
470
プログラマが知っておくといいかもしれないCSSのハナシ
zephiransas
1
870
ラクして学ぶ英語(LT版)
zephiransas
0
180
あなたとCrystal、いますぐダウンロード
zephiransas
1
1.6k
Modern Web Development with ninjaframework
zephiransas
0
3k
Other Decks in Technology
See All in Technology
Castor - Symfony Live 2024 - Paris
lyrixx
1
110
単回帰分析について数式を追いながら実装してみた
kentaitakura
0
510
やっていきテスト
k6s4i53rx
0
160
GraphQLに入門してみた
chiroruxx
2
130
2023 Japan AWS Jr.Championsに選出されての振り返りとこれから
hiropy877
1
130
CI/CDがあたりまえの今の時代にAPIテスティングツールに求められていること / CI/CD Test Night #7
k1low
12
3.1k
LLM + RAG を使った SORACOM Support Bot の裏側の歴史
soracom
PRO
1
640
複数の LLM モデルを扱う上で直面した辛みまとめ
kazuyaseki
1
260
依存ライブラリはどこに?
takesection
0
120
継続的テストモデルを実現するためにスリーアミーゴスを用いた10Xでのシフトレフトの事例
nihonbuson
3
260
大規模なアジャイル開発の現場と技術負債 / Technical Debt
yoshiitaka
21
4.1k
.NETの非同期戦略とUnityとの相互運用
neuecc
2
2.4k
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
28
46k
Bash Introduction
62gerente
604
210k
Code Reviewing Like a Champion
maltzj
512
39k
Designing for Performance
lara
601
67k
The Power of CSS Pseudo Elements
geoffreycrofte
58
4.9k
Making the Leap to Tech Lead
cromwellryan
123
8.4k
Happy Clients
brianwarren
91
6.3k
Large-scale JavaScript Application Architecture
addyosmani
501
110k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
657
120k
Teambox: Starting and Learning
jrom
126
8.4k
Agile that works and the tools we love
rasmusluckow
323
20k
KATA
mclloyd
14
11k
Transcript
使ってみようLombok 吉田貴文(@zephiransas)/岡山Javaユーザ会
Lombokとは? • Javaでよくあるコードを自動生成するライブラリ • コンパイル時にクラスを書き換える • アノテーションで指定
Lombokでできること • アクセサの生成 • equals,toString,hashCodeの生成 • コンストラクタの生成 • Nullチェック •
型推論
Lombokの仕組み IDE Java ファイル Compiler Class ファイル Lombok Lombok 自動生成したとみなす
プラグイン Classファイルを 書き換える
IDEへインストール • Eclipse • lombok.jarをダブルクリック • IntelliJ IDEA • プラグインをインストール
• NetBeans
Eclipse • lombok.jarをダブルクリック
IntelliJ IDEA
IntelliJ IDEA
NetBeans • プロジェクトのプロパティから設定
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
@Getter,@Setter
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; } }
@Setter @Getter public class Student { private Long id; private
String name; private String email; }
@ToString
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; } }
@ToString public class Student { private Long id; private String
name; private String email; }
@Data • クラスに付与 • @Setter,@Getter,@ToString • @EqualsAndHashCode • equalsメソッドとhashCodeメソッドを生成 •
一般的なJavaBeanであれば、これだけで良い
@NonNull
@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; }
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; }
val
Student student = new Student(); ͜͜ʹܕใ͕͋Δ ͜͜ʹܕใ͕͋Δɾɾɾ
val student = new Student(); ӈล͔ΒܕใΛਪ͢Δ
val lists = new ArrayList<Student>(); ɾɾɾ Student student = lists.get(0);
4UVEFOUܕ͕औಘͰ͖Δ
valは便利なようだが まだ問題も多い・・・
ただしEclipseのみ
大事なことなので もう一度
Eclipseのみ
それScalaで・・・
まとめ • よくあるコードは書かないようにしよう • アクセサはIDEの生成でよくね? • ToStringやequalsとか修正面倒 • 余計なコードがないのでカバレッジがよくなる •
valがステキ • しかしEclipseェ・・・
使ってみようLombok 吉田貴文(@zephiransas)/岡山Javaユーザ会