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

王林
リリース: 2024-07-16 17:46:50
オリジナル
549 人が閲覧しました

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 を使用すると、生産性、コード品質、保守性の向上に貢献するいくつかの魅力的な利点が得られます。
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 なしのデータ オブジェクト

getter メソッドと setter メソッドを作成するための従来の 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;

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

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

public static void main(String[] args) {

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

デロンボク

  • 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 コンストラクターを組み込むことで、テスターはコードをさらに簡素化し、保守性を向上させることができます。

以上がLombok Unleashed: ゲッター、セッター、コンストラクター、ビルダーなどを使用して Java 効率を向上の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート