国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ Java &#&チュートリアル Java の Lombok プロジェクト

Java の Lombok プロジェクト

Jan 08, 2025 pm 10:24 PM

Proyecto Lombok en Java

導入

Lombok は、Java のアノテーション プロセッサとして機能するライブラリであり、コードの冗長性を排除するように設計されています。その主な機能は、反復コードまたは「ボイラープレート」、つまり必要ではあるものの、プログラムのロジックに直接の価値を追加しない要素の生成を自動化することです。主に、Java クラスの一般的な要素の中でも特に、ゲッター メソッドとセッター メソッド、コンストラクター、equals()、hashCode()、toString() メソッドのコンパイル時の自動生成に使用されます。

Lombok では、これらの基本関數(shù)用に數(shù)十行のコードを手動で記述する代わりに、単純な注釈を使用して関數(shù)を定義できるため、よりクリーンで保守性が高く、エラーが発生しにくいコードが得られます。

施設

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

これらのアノテーションを使用すると、屬性がクラス內で宣言された順序に従って使用されることを考慮して、引數(shù)のさまざまな組み合わせを持つコンストラクターを自動的に生成できます。

  • @NoArgsConstructor: 引數(shù)なし (空) のコンストラクターを生成します。コンストラクターを生成できない場合は、例外がスローされます。これを回避するには、次のようにアノテーションを使用します。 @NoArgsConstructor(force = true).
  • @AllArgsConstructor: クラスのすべての屬性を引數(shù)として使用してコンストラクターを生成します。
  • @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() メソッドを自動的に生成します。このメソッドはクラスとその屬性の文字列表現(xiàn)を次の形式で返します: 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

このアノテーションにより、変數(shù)を Final として宣言し、そのデータ型を自動的に推論することができます。つまり、変數(shù)のデータ型を指定する必要はなく、Lombok がその推論を処理します。これは、変數(shù)のデータ型が非常に長いか複雑な場合に便利です。こうすることで繰り返しを避けることができます。

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 とまったく同じように機能しますが、変數(shù)を 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>

@と

このアノテーションを使用すると、変更された屬性を持つ現(xiàn)在のオブジェクトのコピーを返すメソッドを作成できます。つまり、オブジェクトを使用して現(xiàn)在のオブジェクトのコピーを作成できるメソッド withAttributeName(Object object) を生成します。引數(shù)として渡す値によって変更される屬性。元のオブジェクトを変更せずにオブジェクトの屬性を変更したい場合に便利です。

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 までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

ハッシュマップとハッシュテーブルの違いは? ハッシュマップとハッシュテーブルの違いは? Jun 24, 2025 pm 09:41 PM

ハッシュマップとハッシュテーブルの違いは、主にスレッドの安全性、ヌル価値のサポート、パフォーマンスに反映されます。 1.スレッドの安全性の観點から、ハッシュテーブルはスレッドセーフであり、その方法はほとんど同期メソッドであり、ハッシュマップはスレッドセーフではない同期処理を実行しません。 2。ヌル値のサポートに関しては、ハッシュマップは1つのnullキーと複數(shù)のヌル値を許可しますが、ハッシュテーブルはnullキーや値を許可しません。 3.パフォーマンスの観點から、ハッシュマップは同期メカニズムがないため、より効率的です。ハッシュテーブルは、各操作のロックパフォーマンスが低いです。代わりにconcurrenthashmapを使用することをお勧めします。

なぜラッパークラスが必要なのですか? なぜラッパークラスが必要なのですか? Jun 28, 2025 am 01:01 AM

Javaは、基本的なデータ型がオブジェクト指向の操作に直接參加できないため、ラッパークラスを使用し、実際のニーズでオブジェクトフォームが必要になることが多いためです。 1.コレクションクラスは、リストが自動ボクシングを使用して數(shù)値を保存するなど、オブジェクトのみを保存できます。 2。ジェネリックは基本的なタイプをサポートしておらず、パッケージングクラスはタイプパラメーターとして使用する必要があります。 3.パッケージングクラスは、null値を表して、データまたは欠落データを區(qū)別できます。 4.パッケージングクラスは、データの解析と処理を容易にするための文字列変換などの実用的な方法を提供するため、これらの特性が必要なシナリオでは、パッケージングクラスは不可欠です。

JITコンパイラはどのようにコードを最適化しますか? JITコンパイラはどのようにコードを最適化しますか? Jun 24, 2025 pm 10:45 PM

JITコンパイラは、メソッドインライン、ホットスポット検出とコンピレーション、タイプの投機と偏見、冗長操作の排除の4つの方法を通じてコードを最適化します。 1。メソッドインラインで呼び出しのオーバーヘッドを減らし、頻繁に小さな方法と呼ばれる挿入をコールに直接直接挿入します。 2。ホットスポットの検出と高周波コードの実行とそれを中央に最適化して、リソースを節(jié)約します。 3。タイプ投機は、敬v的な呼び出しを達成するためにランタイムタイプ情報を収集し、効率を向上させます。 4.冗長操作は、運用データの削除に基づいて役に立たない計算と検査を排除し、パフォーマンスを向上させます。

インターフェイスの靜的メソッドとは何ですか? インターフェイスの靜的メソッドとは何ですか? Jun 24, 2025 pm 10:57 PM

StaticMethodsinInterfaceswereIntroducatedinjava8toalowutilityは、interfaceitself.beforejava8、そのような導入のために導入されたコード、rediveTodisorgedCode.now、statecmethodssprovidreebenefits:1)彼らの可能性のある測定di

インスタンスイニシャルイザーブロックとは何ですか? インスタンスイニシャルイザーブロックとは何ですか? Jun 25, 2025 pm 12:21 PM

インスタンス初期化ブロックは、Javaで使用され、コンストラクターの前に実行されるオブジェクトを作成するときに初期化ロジックを実行します。複數(shù)のコンストラクターが初期化コード、複雑なフィールド初期化、または匿名のクラス初期化シナリオを共有するシナリオに適しています。靜的初期化ブロックとは異なり、インスタンス化されるたびに実行されますが、靜的初期化ブロックはクラスがロードされたときに1回のみ実行されます。

変數(shù)の「ファイナル」キーワードは何ですか? 変數(shù)の「ファイナル」キーワードは何ですか? Jun 24, 2025 pm 07:29 PM

Injava、thefinalkeywordpreventsavariaibleのValue frombeingededafterassignment、ButiTsbehiviordiffersforprimitivesandobjectReferences

工場のパターンとは何ですか? 工場のパターンとは何ですか? Jun 24, 2025 pm 11:29 PM

ファクトリーモードは、オブジェクトの作成ロジックをカプセル化するために使用され、コードをより柔軟でメンテナンスしやすく、ゆるく結合します。コアの答えは、オブジェクトの作成ロジックを一元的に管理し、実裝の詳細を隠し、複數(shù)の関連オブジェクトの作成をサポートすることです。特定の説明は次のとおりです。工場モードは、NewClass()の使用を直接回避し、処理のための特別な工場クラスまたは方法にオブジェクトの作成を手渡します。複數(shù)のタイプの関連オブジェクトが作成され、作成ロジックが変更され、実裝の詳細を非表示にする必要があるシナリオに適しています。たとえば、支払いプロセッサでは、Stripe、PayPal、その他のインスタンスが工場を通じて作成されます。その実裝には、入力パラメーターに基づいて工場クラスによって返されるオブジェクトが含まれ、すべてのオブジェクトは共通のインターフェイスを実現(xiàn)します。一般的なバリアントには、単純な工場、工場法、抽象的な工場が含まれます。これらは異なる複雑さに適しています。

タイプキャストとは何ですか? タイプキャストとは何ですか? Jun 24, 2025 pm 11:09 PM

変換には、暗黙的で明示的な変換には2つのタイプがあります。 1.暗黙的な変換は、INTを2倍に変換するなど、自動的に発生します。 2。明示的な変換には、(int)mydoubleの使用など、手動操作が必要です。タイプ変換が必要な場合には、ユーザー入力の処理、數(shù)學操作、または関數(shù)間のさまざまなタイプの値の渡されます。注意する必要がある問題は次のとおりです。浮動小數(shù)點數(shù)を整數(shù)に変換すると、分數(shù)部分が切り捨てられ、大きなタイプを小さなタイプに変えるとデータの損失につながる可能性があり、一部の言語では特定のタイプの直接変換ができません。言語変換ルールを適切に理解することは、エラーを回避するのに役立ちます。

See all articles