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
240
使ってみよう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
1.2k
DynamoDB Step Zero to One
zephiransas
0
620
ECSとALBで始めるblue/greenデプロイメント
zephiransas
2
310
DynamoDB関連のアップデート紹介 #reinvent2018
zephiransas
0
720
CloudGarageでGitBucketサーバをたててみた
zephiransas
0
500
プログラマが知っておくといいかもしれないCSSのハナシ
zephiransas
1
980
ラクして学ぶ英語(LT版)
zephiransas
0
190
あなたとCrystal、いますぐダウンロード
zephiransas
1
1.7k
Modern Web Development with ninjaframework
zephiransas
0
3.1k
Other Decks in Technology
See All in Technology
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
Oracle Cloud Infrastructure:2024年12月度サービス・アップデート
oracle4engineer
PRO
0
190
マイクロサービスにおける容易なトランザクション管理に向けて
scalar
0
130
株式会社ログラス − エンジニア向け会社説明資料 / Loglass Comapany Deck for Engineer
loglass2019
3
32k
統計データで2024年の クラウド・インフラ動向を眺める
ysknsid25
2
850
C++26 エラー性動作
faithandbrave
2
750
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
2
270
あの日俺達が夢見たサーバレスアーキテクチャ/the-serverless-architecture-we-dreamed-of
tomoki10
0
460
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1.1k
NilAway による静的解析で「10 億ドル」を節約する #kyotogo / Kyoto Go 56th
ytaka23
3
380
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
日本版とグローバル版のモバイルアプリ統合の開発の裏側と今後の展望
miichan
1
130
Featured
See All Featured
Adopting Sorbet at Scale
ufuk
73
9.1k
The Cost Of JavaScript in 2023
addyosmani
45
7k
BBQ
matthewcrist
85
9.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Making the Leap to Tech Lead
cromwellryan
133
9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
98
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Fireside Chat
paigeccino
34
3.1k
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ユーザ会