導入
Lombok は、Java のアノテーション プロセッサとして機能するライブラリであり、コードの冗長性を排除するように設計されています。その主な機能は、反復コードまたは「ボイラープレート」、つまり必要ではあるものの、プログラムのロジックに直接の価値を追加しない要素の生成を自動化することです。主に、Java クラスの一般的な要素の中でも特に、ゲッター メソッドとセッター メソッド、コンストラクター、equals()、hashCode()、toString() メソッドのコンパイル時の自動生成に使用されます。
Lombok では、これらの基本関数用に数十行のコードを手動で記述する代わりに、単純な注釈を使用して関数を定義できるため、よりクリーンで保守性が高く、エラーが発生しにくいコードが得られます。
施設
Java プロジェクトで Lombok を使用するには、インストールに加えて、pom.xml ファイル (Maven プロジェクトの場合) または build.gradle (Gradle プロジェクトの場合) に対応する依存関係を追加する必要があります。使用している IDE の対応するプラグイン。この投稿では、例として Maven と IntelliJ IDEA を使用します。
<dependencies> <dependency> <groupid>org.projectlombok</groupid> <artifactid>lombok</artifactid> <version>1.18.36</version> <scope>provided</scope> </dependency> </dependencies>
疑問がある場合は、いつでもロンボク島の公式ドキュメントを確認できます:
- Maven とロンボク島
- IntelliJ IDEA のロンボク島
@データ
クラスを作成するとき、手動または IDE によって提供されるショートカットを使用して、次のアクションを定期的に実行します。
- 属性をカプセル化し、そのゲッター メソッドとセッター メソッドを生成する
- 空のコンストラクターと、すべての属性を受け取る別のコンストラクターを生成します
- equals()、hashCode()、toString() メソッドを実装する
Lombok には @Data アノテーションがあり、これを 1 行ですべて実行でき、POJO (Plain Old Java Objects) に関連するすべてを生成できます。このアノテーションは、後で説明する @Getter、@Setter、@EqualsAndHashCode、@NoArgsConstructor、および @AllArgsConstructor アノテーションを組み合わせたものです。
import lombok.Data; @Data public class Persona { private String nombre; }
public class Main { public static void main(String[] args) { Persona p1 = new Persona(); p2.setNombre("Maria"); System.out.println(p1.getNombre()); } }
@NoArgsConstructor、@AllArgsConstructor、および @RequiredArgsConstructor
これらのアノテーションを使用すると、属性がクラス内で宣言された順序に従って使用されることを考慮して、引数のさまざまな組み合わせを持つコンストラクターを自動的に生成できます。
- @NoArgsConstructor: 引数なし (空) のコンストラクターを生成します。コンストラクターを生成できない場合は、例外がスローされます。これを回避するには、次のようにアノテーションを使用します。 @NoArgsConstructor(force = true).
- @AllArgsConstructor: クラスのすべての属性を引数として使用してコンストラクターを生成します。
- @RequiredArgsConstructor: すべての最終フィールドのコンストラクター、および/または @NonNull アノテーションでマークされたコンストラクターを生成します。
<dependencies> <dependency> <groupid>org.projectlombok</groupid> <artifactid>lombok</artifactid> <version>1.18.36</version> <scope>provided</scope> </dependency> </dependencies>
@Getter と @setter
これらのアノテーションを使用すると、クラスのすべての属性に対して、または対応するアノテーションでマークされた属性に対してのみゲッター メソッドとセッター メソッドを自動的に生成できます。つまり、クラス レベルまたは属性レベルで使用できます。
import lombok.Data; @Data public class Persona { private String nombre; }
public class Main { public static void main(String[] args) { Persona p1 = new Persona(); p2.setNombre("Maria"); System.out.println(p1.getNombre()); } }
@ToString
このアノテーションは toString() メソッドを自動的に生成します。このメソッドはクラスとその属性の文字列表現を次の形式で返します: ClassName(attribute1=value1,attribute2=value2, ...)。デフォルトでは、クラスのすべての非静的属性が結果に含まれますが、@ToString.Exclude 属性を使用して特定の属性を除外できます。宣言された名前ではなく属性の値のみを表示したい場合は、 @ToString(includeFieldNames = false) を使用できます。
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class Persona { private String nombre; }
@EqualsAndHashCode
クラスのすべての属性から、equals() メソッドと hashCode() メソッドを生成できます。属性を除外または含める場合は、アノテーション @EqualsAndHashCode.Exclude および @EqualsAndHashCode.Include を使用して実行できます。それぞれ。
import lombok.*; @Getter @Setter public class Persona { private String nombre; private String apellido; }
@価値
以前の Java では、不変クラスを作成するには、クラスや属性を最終型にするなどの一連の手順を実行する必要があり、セッター メソッドは生成されませんでした。 Lombok では、@Value アノテーションを使用して不変クラスを簡単に作成できます。これは、@Getter、@ToString、@EqualsAndHashCode、および @AllArgsConstructor アノテーションを組み合わせて不変クラスを生成します。すべての属性はプライベート最終としてマークされ、セッター メソッドは生成されません。これは @Data の不変のバリアントです。
import lombok.*; public class Persona { @Getter @Setter private String nombre; private String apellido; }
Java の最近のバージョンでは、このアノテーションはレコードの使用に比べて意味を失います。これは、レコードの目的は同じであり、レコードを使用する方が実用的であるためです。このトピックについてさらに詳しく知りたい場合は、ブログに記録に関するその他の投稿があります。
<dependencies> <dependency> <groupid>org.projectlombok</groupid> <artifactid>lombok</artifactid> <version>1.18.36</version> <scope>provided</scope> </dependency> </dependencies>
@val
このアノテーションにより、変数を Final として宣言し、そのデータ型を自動的に推論することができます。つまり、変数のデータ型を指定する必要はなく、Lombok がその推論を処理します。これは、変数のデータ型が非常に長いか複雑な場合に便利です。こうすることで繰り返しを避けることができます。
import lombok.Data; @Data public class Persona { private String nombre; }
型推論に Final var または単に var を直接使用すると、このアノテーションの意味が失われる可能性がありますが、これは言語の特性であるため、その方が便利です。これについて詳しく知りたい場合は、次の投稿を参照してください
public class Main { public static void main(String[] args) { Persona p1 = new Persona(); p2.setNombre("Maria"); System.out.println(p1.getNombre()); } }
@var
これは @val とまったく同じように機能しますが、変数を Final として宣言せず、単にその型を推測します。 String 型のものを宣言することはできず、それに int 型の値を割り当てることは最終的なものではないため、型推論の概念を考慮する必要があります。繰り返しますが、このアノテーションは、Java の最近のバージョンでは var に置き換えられます。
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class Persona { private String nombre; }
@NonNull
このアノテーションは、クラス属性とメソッドのパラメーターで使用できます。基本的に、属性の値を null にすることはできないことを示します。@NonNull でマークされた属性に null 値を割り当てようとすると、null 値が割り当てられることになります。 NullPointerException がスローされます。つまり、(param == null) throw new NullPointerException("param は非 null とマークされていますが、null") が使用されます。生成する例外に関係なく、この値を null にすることができないことを何らかの方法で示すため、IDE 自体の中でその使用がより明確になります。
import lombok.*; @Getter @Setter public class Persona { private String nombre; private String apellido; }
@掃除
このアノテーションにより、close() メソッドがある場合にそれを使用するリソース、または AutoCloseable または Closeable インターフェースを実装するリソースが、そのアノテーションが配置されているコード ブロックの最後で自動的に閉じられるようになります。ファイルやデータベースへの接続など、解放する必要があるリソースを操作する場合に便利です。
import lombok.*; public class Persona { @Getter @Setter private String nombre; private String apellido; }
リソースを使用して try を使用すると、この結果を手動で取得できます。
import lombok.*; @AllArgsConstructor @ToString public class Persona { private String nombre; @ToString.Exclude private String apellido; } // Output: Persona(nombre=Maria)
@ビルダー
このアノテーションを使用すると、設計パターン Builder を自動的に生成できます。これは、複雑なオブジェクトを段階的に構築できるようにするオブジェクトであり、オブジェクトのさまざまな属性を設定する必要がありません。多くのパラメーターを指定してコンストラクターを呼び出します。これは、クラスに多くの属性があり、多くのパラメーターを持つコンストラクターを使用したくない場合に便利です。
<dependencies> <dependency> <groupid>org.projectlombok</groupid> <artifactid>lombok</artifactid> <version>1.18.36</version> <scope>provided</scope> </dependency> </dependencies>
@と
このアノテーションを使用すると、変更された属性を持つ現在のオブジェクトのコピーを返すメソッドを作成できます。つまり、オブジェクトを使用して現在のオブジェクトのコピーを作成できるメソッド withAttributeName(Object object) を生成します。引数として渡す値によって変更される属性。元のオブジェクトを変更せずにオブジェクトの属性を変更したい場合に便利です。
import lombok.Data; @Data public class Persona { private String nombre; }
public class Main { public static void main(String[] args) { Persona p1 = new Persona(); p2.setNombre("Maria"); System.out.println(p1.getNombre()); } }
ここまでで、最も頻繁に使用できるいくつかのアノテーションを見てきました。これらのアノテーションはそれぞれ、追加の構成を受け入れる場合と受け入れない場合があります。同様に、実験的としてマークされている他のアノテーションもあります。いずれにせよ、確認することが重要です。 Lombok が提供するすべての機能と反復的なコード生成に関する利点を最大限に活用するには、公式ドキュメントを参照してください。
以上がJava の Lombok プロジェクトの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

この記事では、Lambda式、Streams API、メソッド参照、およびオプションを使用して、機能プログラミングをJavaに統合することを調べます。 それは、簡潔さと不変性を通じてコードの読みやすさと保守性の改善などの利点を強調しています

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、単一のスレッドで複数の接続を効率的に処理するためにセレクターとチャネルを使用して、非ブロッキングI/O用のJavaのNIO APIについて説明します。 プロセス、利点(スケーラビリティ、パフォーマンス)、および潜在的な落とし穴(複雑さ、

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、ネットワーク通信のためのJavaのソケットAPI、クライアントサーバーのセットアップ、データ処理、リソース管理、エラー処理、セキュリティなどの重要な考慮事項をカバーしています。 また、パフォーマンスの最適化手法も調査します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック



