「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Lombok Unleashed: ゲッター、セッター、コンストラクター、ビルダーなどを使用して Java 効率を向上

Lombok Unleashed: ゲッター、セッター、コンストラクター、ビルダーなどを使用して Java 効率を向上

2024 年 7 月 30 日に公開
ブラウズ:304

Lombok Unleashed: Elevating Java Efficiency with Getters, Setters, Constructors, Builders, and More

プロジェクト ロンボクの紹介

Project Lombok は、コンパイル時に一般的な Java コードを自動的に生成するアノテーションを提供することで、定型コードを削減し、プログラマーの時間とエネルギーを大幅に節約し、プログラマの生産性を向上させることを目的とした人気のある Java ライブラリです

プロジェクト・ロンボクとは何ですか?

Project Lombok は、ゲッター、セッター、コンストラクター、equals、hashCode、toString メソッドなどの反復的なコード構成を手動で記述する必要をなくすアノテーションを提供することで、Java の冗長性に対処します。フィールドまたはクラスに Lombok アノテーションを付けることで、コーダーはコンパイラーにこれらのメソッドを自動的に生成するように指示でき、定型コードの量が減り、Java クラスがよりコンパクトで読みやすくなります。

Project Lombok を使用する理由

Java で Project Lombok を使用すると、生産性、コード品質、保守性の向上に貢献するいくつかの魅力的な利点が得られます。
プロジェクト ロンボクを選ぶ理由は次のとおりです。
「定型コード」を削減します。
また、コードの再利用性と可読性も向上します。
実装は非常に簡単で、複雑なことはありません。
「IDE」と簡単に統合できます。

Maven プロジェクトで Java の Lombok を実装する方法

私たちのプロジェクトのほとんどは Maven に基づいています。したがって、プロジェクト内に存在する「Pom.xml」ファイルに「Project Lombok」の依存関係を追加するだけです。

Maven リポジトリに移動し、そこから Lombok Maven リポジトリをコピーし、最新の Lombok 依存関係を「Pom.xml」に追加して保存し、プロジェクトを更新します。

Java の Project Lombok のゲッター、セッター機能

Java では、これまでのところ、「Java Beans」パターンを使用してゲッターとセッターを追加するのが最も一般的な方法です。ほとんどの IDE は、これらのパターンのコードを自動的に生成します。

「データ オブジェクト」と「データ ファクトリ」を使用してゲッターとセッターを作成することで、このアプローチを理解するコードを見てみましょう:

Lombok なしのデータ オブジェクト

ゲッター メソッドとセッター メソッドを作成するための従来の JavaBeans アプローチは手動で作業を完了しますが、特に最新の Java 開発環境ではあまり望ましくないいくつかの欠点と制限があり、その欠点は Lombok で主にカバーされています。

したがって、これの代わりに、Lombok パターンを使用することを好みます。 Java での実装方法は次のとおりです:

Java の Project Lombok のコンストラクター機能

Lombok を使用しないコンストラクターでは、各コンストラクターを手動で定義する必要がありますが、これは特に多くのフィールドを持つクラスの場合、面倒でエラーが発生しやすい可能性があります。さらに、さまざまなコンストラクター構成を処理する必要があるため、コードが複雑になる可能性があります。

Lombok は、@NoArgsConstructor、@AllArgsConstructor、および @RequiredArgsConstructor アノテーションを使用してこのプロセスを簡素化します。

Lombok を使用しないコンストラクター

Lombok アノテーションを使用すると、手動で記述する必要がある定型コードの量が減ります。 Lombok では、クラスとフィールドに注釈を付けるだけで、指定された条件に基づいてコンストラクターが自動的に生成されます。これにより、コードがよりクリーンで簡潔になります。

ロンボク島のさまざまな特徴と特性

  1. ToString の生成
  • Java では、toString() は java.lang.Object クラスで定義されたメソッドであり、オブジェクトの文字列表現を返す目的を果たします。 toString() メソッドは Java のすべてのクラスに継承され、Object クラスのデフォルトの実装は、クラス名の後にアットマーク (@) とオブジェクトのハッシュ コードの 16 進表現を含む文字列を返します。
  • ただし、Object によって提供される toString() のデフォルト実装は、特定のクラスにとって必ずしも意味があるとは限らず、有用であるとは限りません。したがって、開発者が独自のクラスで toString() メソッドをオーバーライドして、オブジェクトの状態やプロパティをより適切に説明するカスタム文字列表現を提供するのが一般的です。
  • この例のように、Profile クラスは toString() をオーバーライドして、名、姓、指定、年齢の情報を含む文字列を返すことができます。 toString() をオーバーライドすると、人間が判読できる形式でオブジェクト情報を簡単に出力または記録できるため、デバッグ、ログ記録、またはユーザーへの情報の表示に役立ちます。
  • ToString Lombok アノテーションを使用しない場合は、Profile クラス内に toString() メソッドを手動で実装する必要があります。 firstName、lastName、指定、および age フィールドを連結して、目的の文字列表現を作成します。この手動実装は、Lombok の @ToString アノテーションと同じ結果を達成します。

ToString 注釈機能を使用しない場合

  • @ToString アノテーションは、クラスの toString() メソッドを生成し、そのフィールドの文字列表現を提供します。データ モデルを強化するときに自分で作成して維持する必要はありません。
  • このアノテーションを使用すると、プロファイルのインスタンスで toString() を呼び出すと、そのフィールドの値を含む文字列が返されます。
  • @Exclude アノテーションは、Getter、Setter、ToString、EqualAndHashCode など、あらゆるさまざまなアノテーションに役立ちます。 @ToString アノテーションの例と一緒にそれを理解しましょう。
  • 指定フィールドに @ToString(exclude = {“指定”}) の注釈を付けることによって
  • Lombok では、@ToString によって生成される toString() メソッドに含まれないようにします。これは、オブジェクトの文字列表現で特定のフィールドを表示したくない場合に便利です。

2. EqualAndHashCode の生成

  • Java では、equals() と hashCode() は、それぞれオブジェクトの等価性とハッシュ コード生成を実装するために一般的に使用される 2 つのメソッドです。
  • equals() メソッド:equals() メソッドは、2 つのオブジェクトが等しいかどうかを比較するために使用されます。デフォルトでは、Object クラスによって提供される equals() メソッドはオブジェクト参照を比較します。つまり、比較される 2 つのオブジェクトがメモリ内の同じインスタンスである場合にのみ true を返します。ただし、多くの場合、オブジェクト属性に基づいて意味のある等価性の概念を定義するには、カスタム クラスの equals() メソッドをオーバーライドする必要があります。
  • hashCode() メソッド : hashCode() メソッドは、オブジェクトのハッシュ コード値を生成するために使用されます。ハッシュ コードはオブジェクトの状態を表す整数値であり、通常はハッシュ テーブルなどのハッシュ ベースのデータ構造で使用されます。 hashCode() メソッドは、オブジェクトをハッシュ ベースのコレクションに効率的に格納および取得できるようにするため、重要です。
  • この例では、2 つの Profile オブジェクトのフィールドが等しいかどうかを比較するために、equals() メソッドを手動で実装してオーバーライドし、フィールドに基づいてハッシュ コードを生成する hashCode() メソッドを手動で実装してオーバーライドしました。
  • フィールドが等しいかどうかを比較するために java.util.Objects クラスの Objects.equals() メソッドを使用し、ハッシュ コードを生成するために Objects.hash() メソッドを使用します。

EqualAndHashCode アノテーション機能を使用しない場合

  • @EqualsAndHashCode アノテーションは、クラスのフィールドに基づいて、equals() メソッドと hashCode() メソッドを生成します。
  • このアノテーションを使用すると、Lombok はクラスのすべてのフィールドを使用して、equals() メソッドと hashCode() メソッドを生成します。
  • これにより、これらのメソッドを手動で実装する必要がなくなり、定型コードが削減され、コードの保守性が向上します。

3.データ注釈
@data アノテーションを使用しない場合、ゲッター、セッター、およびコンストラクターの機能をコードに手動で実装する必要があります。

  • データ注釈機能を使用しない場合

  • @data アノテーションは、@Getter、@setter、@NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode やその他多くのアノテーションをバンドルする便利なショートカットです。

  • @data を使用すると、Lombok はクラスで宣言されたフィールドに基づいてこれらのメソッドを自動的に生成します。これにより、記述および保守する必要がある定型コードの量が大幅に削減され、コードがより簡潔で読みやすくなります。

  1. ビルダーパターン
  • プロファイルの例に戻ると、新しいインスタンスを構築するには、潜在的に多数の 4 つの引数を持つコンストラクターを使用する必要がありますが、クラスに追加の属性を導入すると、このタスクは扱いにくくなります。
  • ありがたいことに、Lombok は @builder 機能を備えた堅牢なソリューションを提供しており、新しいインスタンスを作成するための Builder パターンの利用を容易にします。この機能を Profile クラスに統合しましょう。

パッケージ org.example.dataobjects;

ロンボク島をインポートします。*;

@ゲッター
@セッター
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
@ToString(除外 = {"指定"})
@EqualsAndHashCode
@ビルダー
@データ
パブリック クラス プロフィール {
プライベート文字列名;
プライベート文字列姓;
プライベート文字列指定;
プライベート int age;

public static void main(String[] args) {

// ビルダーを使用してプロファイルのインスタンスを作成します
プロファイル プロファイル = Profile.builder()
.firstName("パート")
.lastName("カトロティヤ")
.designation("QA オートメーション エンジニア")
.age(23)
。建てる();
}
}

デロンボク

  • Delombok は Project Lombok が提供するツールで、Lombok のアノテーションの効果を無効にし、本質的にコードを「デロンボク化」します。アノテーションを展開し、アノテーションが生成する対応する定型コードに置き換えることで、Lombok アノテーションを含む Java ソース コードをプレーン Java コードに変換できます。
  • Delombok の主な目的は、Lombok アノテーションを直接サポートしていない環境やツールとの互換性と相互運用性を促進することです。たとえば、開発環境に Lombok がインストールされていない開発者とコードを共有する必要がある場合、または Lombok アノテーションを理解できないツールを使用して Lombok アノテーションが付けられたコードを分析またはリファクタリングしたい場合は、Delombok を使用して変換できます。コードをそれらのコンテキストで理解でき、使用できる形式に変換します。
  • Delombok はコマンド ライン経由で呼び出すことも、Maven や Gradle などのビルド ツールに統合することもできます。ソース コード上で Delombok を実行すると、Java ファイルが処理され、Lombok アノテーションが展開され、Lombok アノテーションのない新しい Java ファイルが生成されます。結果のコードは機能的には元のコードと同等ですが、Lombok.
  • への依存はありません。
  • 全体として、Delombok は Project Lombok が提供する便利なツールで、Lombok アノテーションを使用してコードベースの相互運用性と保守性を強化し、開発者が幅広い開発環境やツールとの互換性を確保しながら Lombok の利点を活用できるようにします。

結論

この投稿では私が最も有益だと感じた機能に焦点を当てていますが、Lombok には追加の機能やカスタマイズが数多く用意されています。
Lombok のドキュメントは、各注釈の詳細な説明と例を提供する貴重なリソースです。この投稿に興味を持たれた方は、ロンボク島のドキュメントをさらに深く調べて、さらに多くの可能性を明らかにすることをお勧めします。
さらに、プロジェクト サイトでは、さまざまなプログラミング環境間で Lombok を統合するための包括的なガイドが提供されています。 Eclipse、NetBeans、IntelliJ などを使用している場合でも、Lombok はワークフローとシームレスに統合されますのでご安心ください。頻繁に IDE を切り替える人間として、Lombok のあらゆるプラットフォームにおける多用途性と信頼性を証明できます。
全体として、Project Lombok は Java 開発を合理化し、コードの冗長性を減らし、ベスト プラクティスを推進する包括的な機能セットを提供します。
Project Lombok は、Java テストを合理化し、コードの冗長性を減らし、ベスト プラクティスを促進する包括的な機能セットを提供します。 Lombok ビルダーと Lombok コンストラクターを組み込むことで、テスターはコードをさらに簡素化し、保守性を向上させることができます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/jignect_technologies/lombok-unleashed-elevating-java-efficiency-with-getters-setters-constructors-builders-and-more-mfm?1 侵害がある場合は、 Study_golang@163 .comdelete に連絡してください
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3