検索

Proyecto Lombok en Java

導入

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 サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JVMは、Javaの「Write and、Run Anywhere」(Wora)機能にどのように貢献しますか?JVMは、Javaの「Write and、Run Anywhere」(Wora)機能にどのように貢献しますか?May 02, 2025 am 12:25 AM

JVMは、バイトコード解釈、プラットフォームに依存しないAPI、動的クラスの負荷を介してJavaのWORA機能を実装します。 2。標準API抽象オペレーティングシステムの違い。 3.クラスは、実行時に動的にロードされ、一貫性を確保します。

Javaの新しいバージョンは、プラットフォーム固有の問題にどのように対処しますか?Javaの新しいバージョンは、プラットフォーム固有の問題にどのように対処しますか?May 02, 2025 am 12:18 AM

Javaの最新バージョンは、JVMの最適化、標準的なライブラリの改善、サードパーティライブラリサポートを通じて、プラットフォーム固有の問題を効果的に解決します。 1)Java11のZGCなどのJVM最適化により、ガベージコレクションのパフォーマンスが向上します。 2)Java9のモジュールシステムなどの標準的なライブラリの改善は、プラットフォーム関連の問題を削減します。 3)サードパーティライブラリは、OpenCVなどのプラットフォーム最適化バージョンを提供します。

JVMによって実行されたバイトコード検証のプロセスを説明します。JVMによって実行されたバイトコード検証のプロセスを説明します。May 02, 2025 am 12:18 AM

JVMのバイトコード検証プロセスには、4つの重要な手順が含まれます。1)クラスファイル形式が仕様に準拠しているかどうかを確認し、2)バイトコード命令の有効性と正確性を確認し、3)データフロー分析を実行してタイプの安全性を確保し、検証の完全性とパフォーマンスのバランスをとる。これらの手順を通じて、JVMは、安全で正しいバイトコードのみが実行されることを保証し、それによりプログラムの完全性とセキュリティを保護します。

プラットフォームの独立性は、Javaアプリケーションの展開をどのように簡素化しますか?プラットフォームの独立性は、Javaアプリケーションの展開をどのように簡素化しますか?May 02, 2025 am 12:15 AM

java'splatformendencealLowsApplicationStorunOperatingSystemwithajvm.1)singlecodebase:writeandcompileonceforallplatforms.2)easyUpdates:updatebytecodeforsimultaneousdeployment.3)テストの実験効果:scalbortffortfforduniverbehaviol.4)

Javaのプラットフォームの独立性は、時間とともにどのように進化しましたか?Javaのプラットフォームの独立性は、時間とともにどのように進化しましたか?May 02, 2025 am 12:12 AM

Javaのプラットフォームの独立性は、JVM、JITコンピレーション、標準化、ジェネリック、ラムダ式、Projectpanamaなどのテクノロジーを通じて継続的に強化されています。 1990年代以来、Javaは基本的なJVMから高性能モダンJVMに進化し、さまざまなプラットフォームでのコードの一貫性と効率を確保しています。

Javaアプリケーションでプラットフォーム固有の問題を緩和するためのいくつかの戦略は何ですか?Javaアプリケーションでプラットフォーム固有の問題を緩和するためのいくつかの戦略は何ですか?May 01, 2025 am 12:20 AM

Javaはプラットフォーム固有の問題をどのように軽減しますか? Javaは、JVMおよび標準ライブラリを通じてプラットフォームに依存します。 1)bytecodeとjvmを使用して、オペレーティングシステムの違いを抽象化します。 2)標準のライブラリは、パスクラス処理ファイルパス、CHARSETクラス処理文字エンコードなど、クロスプラットフォームAPIを提供します。 3)最適化とデバッグのために、実際のプロジェクトで構成ファイルとマルチプラットフォームテストを使用します。

Javaのプラットフォームの独立性とマイクロサービスアーキテクチャの関係は何ですか?Javaのプラットフォームの独立性とマイクロサービスアーキテクチャの関係は何ですか?May 01, 2025 am 12:16 AM

java'splatformentencentenhancesmicroservicesecturectureby byofferingdeploymentflexability、一貫性、スケーラビリティ、およびポート可能性。1)展開の展開の展開は、AllosmicRoserviThajvm.2)deploymentflexibility lowsmicroserviceSjvm.2)一貫性のあるAcrossServicessimplisimpligiessdevelisementand

GraalvmはJavaのプラットフォーム独立目標とどのように関係していますか?GraalvmはJavaのプラットフォーム独立目標とどのように関係していますか?May 01, 2025 am 12:14 AM

Graalvmは、Javaのプラットフォームの独立性を3つの方法で強化します。1。言語間の相互運用性、Javaが他の言語とシームレスに相互運用できるようにします。 2。独立したランタイム環境、graalvmnativeimageを介してJavaプログラムをローカル実行可能ファイルにコンパイルします。 3.パフォーマンスの最適化、Graalコンパイラは、Javaプログラムのパフォーマンスと一貫性を改善するための効率的なマシンコードを生成します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 中国語版

SublimeText3 中国語版

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。