Enviar búsqueda
Cargar
Lombokのススメ
•
3 recomendaciones
•
1,306 vistas
なべ
Seguir
Lombokの簡単な使い方
Leer menos
Leer más
Tecnología
Vista de diapositivas
Denunciar
Compartir
Vista de diapositivas
Denunciar
Compartir
1 de 21
Descargar ahora
Descargar para leer sin conexión
Recomendados
Lombok ハンズオン
Lombok ハンズオン
Hiroto Yamakawa
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
ジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansai
Tomohiro Kumagai
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
Tomohiro Kumagai
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Sharing Deep Dive
Sharing Deep Dive
Takaaki Suzuki
プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__
Tomohiro Kumagai
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
Koichi Sakata
Recomendados
Lombok ハンズオン
Lombok ハンズオン
Hiroto Yamakawa
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
ジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansai
Tomohiro Kumagai
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
Tomohiro Kumagai
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Sharing Deep Dive
Sharing Deep Dive
Takaaki Suzuki
プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__
Tomohiro Kumagai
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
Koichi Sakata
Javaクラスファイルの読み方
Javaクラスファイルの読み方
y torazuka
GoF デザインパターン 2009
GoF デザインパターン 2009
miwarin
gen-class とバイトコード(第3回 gen-class 勉強会資料)
gen-class とバイトコード(第3回 gen-class 勉強会資料)
tnoda
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
信之 岩永
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
信之 岩永
Inside FastEnum
Inside FastEnum
Takaaki Suzuki
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
Swift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhios
Tomohiro Kumagai
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Taku Miyakawa
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswift
Tomohiro Kumagai
Swift 2.0 で変わったところ「前編」 #cswift
Swift 2.0 で変わったところ「前編」 #cswift
Tomohiro Kumagai
リテラルと型の話 #__swift__
リテラルと型の話 #__swift__
Tomohiro Kumagai
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
信之 岩永
JVMの中身を可視化してみた
JVMの中身を可視化してみた
Kengo Toda
Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)
Uehara Junji
ROS Tutorial 02 - CIT
ROS Tutorial 02 - CIT
Daiki Maekawa
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
Unityで覚えるC#
Unityで覚えるC#
Masamitsu Ishikawa
Kanazawa.js.Next
Kanazawa.js.Next
dynamis
ES6 in Practice
ES6 in Practice
Teppei Sato
Más contenido relacionado
La actualidad más candente
Javaクラスファイルの読み方
Javaクラスファイルの読み方
y torazuka
GoF デザインパターン 2009
GoF デザインパターン 2009
miwarin
gen-class とバイトコード(第3回 gen-class 勉強会資料)
gen-class とバイトコード(第3回 gen-class 勉強会資料)
tnoda
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
信之 岩永
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
信之 岩永
Inside FastEnum
Inside FastEnum
Takaaki Suzuki
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
Swift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhios
Tomohiro Kumagai
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Taku Miyakawa
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswift
Tomohiro Kumagai
Swift 2.0 で変わったところ「前編」 #cswift
Swift 2.0 で変わったところ「前編」 #cswift
Tomohiro Kumagai
リテラルと型の話 #__swift__
リテラルと型の話 #__swift__
Tomohiro Kumagai
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
信之 岩永
JVMの中身を可視化してみた
JVMの中身を可視化してみた
Kengo Toda
Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)
Uehara Junji
ROS Tutorial 02 - CIT
ROS Tutorial 02 - CIT
Daiki Maekawa
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
Unityで覚えるC#
Unityで覚えるC#
Masamitsu Ishikawa
La actualidad más candente
(20)
Javaクラスファイルの読み方
Javaクラスファイルの読み方
GoF デザインパターン 2009
GoF デザインパターン 2009
gen-class とバイトコード(第3回 gen-class 勉強会資料)
gen-class とバイトコード(第3回 gen-class 勉強会資料)
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
Inside FastEnum
Inside FastEnum
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
Swift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhios
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「前編」 #cswift
Swift 2.0 で変わったところ「前編」 #cswift
リテラルと型の話 #__swift__
リテラルと型の話 #__swift__
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
JVMの中身を可視化してみた
JVMの中身を可視化してみた
Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)
ROS Tutorial 02 - CIT
ROS Tutorial 02 - CIT
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Unityで覚えるC#
Unityで覚えるC#
Similar a Lombokのススメ
Kanazawa.js.Next
Kanazawa.js.Next
dynamis
ES6 in Practice
ES6 in Practice
Teppei Sato
20110820 metaprogramming
20110820 metaprogramming
Masanori Kado
Visual C++で使えるC++11
Visual C++で使えるC++11
nekko1119
Adaptive optimization of JIT compiler
Adaptive optimization of JIT compiler
nothingcosmos
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
Akira Shimosako
PHP AST 徹底解説
PHP AST 徹底解説
do_aki
JavaScript.Next
JavaScript.Next
dynamis
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
Fumihiko Shiroyama
第一回社内 Scala 勉強会(一部抜粋)その 2
第一回社内 Scala 勉強会(一部抜粋)その 2
lyrical_logical
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.js
mganeko
C#勉強会
C#勉強会
hakugakucafe
CodableのためのEncoderとDecoderを 自作してみた
CodableのためのEncoderとDecoderを 自作してみた
Yuichi Nakayasu
Kotlin勉強会 in ehime
Kotlin勉強会 in ehime
Eigoro Yamamura
JavaLearning_1.pptx
JavaLearning_1.pptx
RyuuGaku
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
博文 斉藤
Rubyからg rpcでdocker化したkuromojiを使った話
Rubyからg rpcでdocker化したkuromojiを使った話
Misao X
Php in ruby
Php in ruby
do_aki
図解で理解するvetKD
図解で理解するvetKD
ryoo toku
Docker 基本のおさらい
Docker 基本のおさらい
Naoki Nagazumi
Similar a Lombokのススメ
(20)
Kanazawa.js.Next
Kanazawa.js.Next
ES6 in Practice
ES6 in Practice
20110820 metaprogramming
20110820 metaprogramming
Visual C++で使えるC++11
Visual C++で使えるC++11
Adaptive optimization of JIT compiler
Adaptive optimization of JIT compiler
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
PHP AST 徹底解説
PHP AST 徹底解説
JavaScript.Next
JavaScript.Next
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
第一回社内 Scala 勉強会(一部抜粋)その 2
第一回社内 Scala 勉強会(一部抜粋)その 2
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.js
C#勉強会
C#勉強会
CodableのためのEncoderとDecoderを 自作してみた
CodableのためのEncoderとDecoderを 自作してみた
Kotlin勉強会 in ehime
Kotlin勉強会 in ehime
JavaLearning_1.pptx
JavaLearning_1.pptx
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
Rubyからg rpcでdocker化したkuromojiを使った話
Rubyからg rpcでdocker化したkuromojiを使った話
Php in ruby
Php in ruby
図解で理解するvetKD
図解で理解するvetKD
Docker 基本のおさらい
Docker 基本のおさらい
Más de なべ
Javaで学ぶネットワークプログラミングの基礎
Javaで学ぶネットワークプログラミングの基礎
なべ
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
なべ
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
なべ
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編
なべ
Spring bootでweb バリデート編
Spring bootでweb バリデート編
なべ
Spring bootでweb ユニットテスト編
Spring bootでweb ユニットテスト編
なべ
Spring bootでweb 基本編
Spring bootでweb 基本編
なべ
はじめてのSpring Boot
はじめてのSpring Boot
なべ
Más de なべ
(8)
Javaで学ぶネットワークプログラミングの基礎
Javaで学ぶネットワークプログラミングの基礎
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb バリデート編
Spring bootでweb バリデート編
Spring bootでweb ユニットテスト編
Spring bootでweb ユニットテスト編
Spring bootでweb 基本編
Spring bootでweb 基本編
はじめてのSpring Boot
はじめてのSpring Boot
Último
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Último
(11)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Lombokのススメ
1.
2.
アジェンダ はじめに Javaの冗長コード
Lombokを使った冗長コードの排除 Lombokを使ってBuilderを追加 Maven依存関係 IntelliJのPlugin まとめ
3.
はじめに ここでは、Javaの冗長コードを排除するLombokを説明する https://projectlombok.org/
4.
Javaの冗長コード Javaの昔から抱える問題に「冗長コード」がある。 たとえば、以下のようなフィールドがあったとする。 /** productテーブルのEntity
*/ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; } フィールド宣言はprivateが原則
5.
Javaの冗長コード (1つ目) フィールドはprivate宣言が原則なので、 そのフィールドにアクセスするsetter/getterを書くのが冗長。 /**
productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** 商品コードの取得 */ public Integer getProductCode() { return productCode } /** 商品コードの設定 */ public void setProductCode(Integer productCode ) { this.productCode = productCode } } フィールドごとに setter/getterを書く
6.
Javaの冗長コード (2つ目) コンストラクタを書くのが冗長。 /**
productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** デフォルトコンストラクタ */ public Product() { } /** フィールド初期化をするコンストラクタ */ public Product(Integer productCode, String productName) { this.productCode = productCode; this.productName = productName; } } デフォルトコンストラクタ以外に、 フィールド初期化用コンストラクタを書く
7.
Javaの冗長コード (3つ目) クラスの文字列表現を返すtoStringメソッドを書くのが冗長。 /**
productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** クラスの文字列表現 */ public String toString() { StringBuilder sb = new StringBuilder(); sb.append(“productCode:”).append(productCode); sb.append(“ productName:”).append(productName); return sb.toString(); } } フィールドの内容を 文字列にして返却する
8.
Javaの冗長コード (4つ目) 各フィールドが等価かを返すequalsメソッドを書くのが冗長。 /**
productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** 等価かを返す */ public boolean equals(Object o) { if (!(o instanceof Product)) { return false; } Product p = (Product)o; if ((this.productCode != null && p.productCode == null) || (this.productCode == null && p.productCode != null) || ・・・ 以下略 同じクラスかのチェック フィールド1つずつ、 nullチェック、値チェックをする
9.
Javaの冗長コード (5つ目) 各フィールドの値に応じたハッシュ値を返す hashCodeメソッドを書くのが冗長。 /**
productテーブルのEntity */ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; /** ハッシュ価を返す */ public int hashCode() { ・・・ 以下略
10.
Lombokを使った冗長コードの排除 これら冗長コードを、Lombokを使って排除する。 /** productテーブルのEntity
*/ public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; }
11.
Lombokを使った冗長コードの排除 getter/setter、toString、 equals、hashCodeメソッドの追加 /** productテーブルのEntity
*/ @Data public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; } @Dataアノテーションを付ける
12.
Lombokを使った冗長コードの排除 デフォルトコンストラクタの追加 /** productテーブルのEntity
*/ @Data @NoArgsConstructor public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; } @NoArgsConstructor アノテーションを付ける
13.
Lombokを使った冗長コードの排除 フィールド初期化用コンストラクタの追加 /** productテーブルのEntity
*/ @Data @NoArgsConstructor @AllArgsConstructor public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; } @ AllArgsConstructor アノテーションを付ける
14.
Lombokを使った冗長コードの排除 以上 /** productテーブルのEntity
*/ @Data @NoArgsConstructor @AllArgsConstructor public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; }
15.
Lombokを使ってBuilderを追加 Bulderを追加する。 /** productテーブルのEntity
*/ @Data @NoArgsConstructor @AllArgsConstructor @Builder public class Product { /** 商品コード */ private Integer productCode; /** 商品名 */ private String productName; }
16.
Lombokを使ってBuilderを追加 Bulderを使う。 Product product
= Product.builder() .productCode(1) .productName(“ガム”) .build(); 任意のフィールドのみを初期化した インスタンスを作成できる
17.
Maven依存関係 Maven依存関係に下記を追加する。 <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.14.0</version> <scope>provided</scope> </dependency> </dependencies>
18.
IntelliJのPlugin IntelliJのPluginを追加する。 設定画面を開いて 「Plugins」を選択 キーワードに 「lombok」を入力 リストに出ない場合は 「Browse」をクリック
19.
IntelliJのPlugin IntelliJのPluginを追加する。 「Lombok Plugin」を選択 ダウンロードと インストールをする
20.
IntelliJのPlugin IntelliJのPluginを追加する。 IntelliJを 再起動して完了
21.
まとめ Lombokを使って定型的なコードをなるべく排除し、 それで浮いた時間を使って本来やるべき実装に集中しましょう。
Descargar ahora