覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

Lombok

Lombok - @Builderでデフォルト値を指定する

Lombokの@Builderアノテーションは何かと便利なのですが、プロパティへ値をセットするためのBuilderのメソッドを呼ばないと対応するフィールドが初期値(数値なら0, booleanならfalse, オブジェクトならnull)になってしまいます。 このあたりの動きをv1.16.…

Lombok - IntelliJ IDEAのLombok Pluginによる操作

以前のエントリでIntelliJ IDEAへLombok Pluginをインストール手順を記載しました。 このPluginを利用することでIntelliJ IDEA上で、Lombokの操作を一部補助してくれます。 Lombokのアノテーションの貼り付け メニューからの選択操作でコード上にLombokのア…

Lombok - delombok

Lombokを利用すると各種アノテーションを付与するだけでJavaのお決まりのコード(ボイラープレートコード)を削減することができます。 Lombokを使用している場合に、実際に生成されるコードを確認したい場合などがあります。 そのような際にはdelombokの機…

Lombokを開発環境にインストールする(IntelliJ IDEA)

以前のエントリでLombokを、Eclipseへインストールして利用する手順を紹介しました。 本エントリでは、IntelliJ IDEAでLombokを利用するための設定手順を説明します。 設定はすべてIntelliJ IDEAで行います。IntelliJ IDEAを起動した上で実施してください。 …

Lombok - @SneakyThrows

Lombokの@SneakyThrows(lombok.SneakyThrows)アノテーションの利用サンプルです Javaの例外は、チェック例外と実行時例外の2つに大別されます。 チェック例外が発生する場面では、try-catchで処理するかthrows節に記述して上位へスローするかの対処が必要…

Lombok - @Cleanup

Lombokの@Cleanup(lombok.Cleanup)アノテーションの利用サンプルです JavaでI/O処理のためにInputStreamやOutputStreamを利用している場合、必ずfinally句で順番にリソースをcloseするという処理を記述することになります。 これは処理の本質ではないので…

Lombok - @ExtensionMethod

Lombokの@ExtensionMethod(lombok.experimental.ExtensionMethod)アノテーションの利用サンプルです。 JavaにおいてString(java.lnag.String)クラスに対して、メソッドを追加することはできません。Stringに対する新しい操作がほしい場合は、Apache Comm…

Lombok - @Wither

Lombokの@Wither(lombok.experimental.Wither)アノテーションの利用サンプルです。 Immutableなクラスでは、クラス内のメンバの値を変更したい場合にwithXXXXというメソッドを定義することがあります。 withメソッドは、元のインスタンスの内容は変更せず…

Lombok - @UtilityClass

Lombokの@UtilityClass(lombok.experimental.UtilityClass)アノテーションの利用サンプルです。 Javaでユーティリティ用のクラスを作成する際には、一般的に以下のようなコードを記述する必要があります クラスは継承されないようにfinalにする インスタン…

Lombok - @Accessors

Lombokの@Accessors(lombok.experimental.Accessors)アノテーションの利用サンプルです。 クラスに@Accessorsアノテーションを付与してパラメータを指定することで、@Getter/@Setterで生成されるgetter/setterをカスタマイズすることができます。 @Accesso…

Lombok - @Synchronized

Lombokの@Synchronized(lombok.Synchronized)アノテーションの利用サンプルです @Synchronizedをメソッドに付与すると自動生成されたロックオブジェクトでsynchronizedブロックが生成された状態になります。 @Synchronizedを利用すると以下を省略すること…

Lombok - @Log

Lombokから提供されるロギング(ロガー)用のアノテーションのサンプルです https://projectlombok.org/features/Log.html ロガーを利用する際の普通のコード 業務アプリケーションで、ロガーを利用してアプリケーションログを出力するというのはごくごく一…

Lombokを使った開発ひと巡り

Lombokを利用することでJavaのボイラープレートコードをシンプルに記述することができます。 開発の準備 ■LombokをEclipseにインストールする ■LombokをIntelliJ IDEAにインストールする Lombok - 利用頻度の高いアノテーション Lombok - アノテーション詳細…

Lombok - @Builder

Lombokの@Builder(lombok.Builder)アノテーションの利用サンプルです。 対象クラスを生成するためのBuilderクラスを自動的に生成してくれます。@Valueアノテーションと組み合わせると強力です @Builderを付与してみる @Builderをクラスに付与して自動的にB…

Lombok - @EqualsAndHashCode

Lombokの@EqualsAndHashCode(lombok.EqualsAndHashCode)アノテーションの利用サンプルです。 クラスに@EqualsAndHashCodeアノテーションを付与することで、対象クラスのequalsメソッドとhashCodeメソッドがクラス内のメンバに応じて適切にオーバーライドさ…

Lombok - コンストラクタの生成(xArgsConstructor)

Lombokのコンストラクタ生成に関する以下アノテーションの利用サンプルです。 @NoArgsConstructor(lombok.NoArgsConstructor) @AllArgsConstructor(lombok.AllArgsConstructor) @RequiredArgsConstructor(lombok.RequiredArgsConstructor) デフォルトコンス…

Lombok - @Getter / @Setter

Lombokの@Getter(lombok.Getter)と @Setter(lombok.Setter)アノテーションの利用サンプルです。 @Getter/@Setterはその名の通り、getter/setterを自動生成するためのアノテーションです。 @Getter/@Setterをクラスに付与 @Getter, @Setterをクラスに付与…

Lombok - @Value

Lombokの@Value(lombok.Value)アノテーションの利用サンプルです。 クラスに@Valueアノテーションを付与することで、対象クラスをImmutableの状態にすることができます。 @Valueアノテーションを付与すると、@Getter, @ToString, @EqualsAndHashCode, @All…

Lombok - @NonNull

Lombokの@NonNull(lombok.NonNull)アノテーションの利用サンプルです。 @NonNullアノテーションをクラスのメンバやメソッドの引数に付与することでnullチェックが自動で挿入されます。 @NonNullが付与されたメンバや引数にnullを渡そうとするとNullPointer…

Lombok - @Data (2)

Lombokの@Data(lombok.Data)アノテーションの利用サンプルです。 @Dataアノテーションにより、JavaBeansを簡単に記述することができます。 以下記事に続いて@Dataを利用したコードをもう少し色々書いてみました。 本エントリでは主に、@Dataによって作成さ…

Lombok - valでローカル変数の型を省略する

Lombokのlombok.valの利用サンプルです。 https://projectlombok.org/features/val.html ローカル変数を扱う場合に、通常であれば変数の型を明確に記述する必要がありますが、 Lombokのvalを使うと型を明示的に書かずに済みます。 ちなみにvalの変数はfinal…

Lombok - @ToString

Lombokの@ToString(lombok.ToString)アノテーションの利用サンプルです。 @ToStringアノテーションを付与することで、toStringメソッドを適切にオーバーライドしてくれます。 アノテーションにパラメータを与えることでtoStringメソッドでの文字列化処理や…

Lombok - @Data

Lombokの@Data(lombok.Data)アノテーションの利用サンプルです。 クラスに@Dataアノテーションを付与すると、対象クラス内のインスタンス変数に対してgetter/setterでアクセスすることが可能となります。 対象のインスタンス変数をfinalで宣言している場合…

Lombokを用いた開発 (2)

Lombokの利用サンプルです。 Lombokを用いてIDEで開発する場合は基本的にIDEにLombokをインストールしている必要があります。 IDEへのインストールについては以下を参考にしてください lombok.Builder Immutableなクラスでfinalのフィールドが増えると引数付…

Lombokを用いた開発 (1)

Lombokを利用する主な目的にJavaのお決まりのコード(ボイラープレートコード)を削減することがあげられます。 その目的のために頻繁に使用するアノテーションがいくつか存在しています。 本記事では利用頻度の高いアノテーションのいくつかをピックアップ…

Lombokを開発環境にインストールする(Eclipse)

Lombokは、Javaの冗長さを代表するgetter/setterをBeanクラスに全く記述していないのに、getter/setterで各メンバへアクセス可能とするような、かなり強力な機能を提供してくれます。(不正確かもしれないですが、C#の自動実装プロパティのようなイメージで…