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

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

Java の Lombok プロジェクト

Jan 08, 2025 pm 10:24 PM

Proyecto Lombok en Java

導(dǎo)入

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

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

施設(shè)

Java プロジェクトで Lombok を使用するには、インストールに加えて、pom.xml ファイル (Maven プロジェクトの場(chǎng)合) または build.gradle (Gradle プロジェクトの場(chǎng)合) に対応する依存関係を追加する必要があります。使用している IDE の対応するプラグイン。この投稿では、例として Maven と IntelliJ IDEA を使用します。

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.36</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

疑問(wèn)がある場(chǎng)合は、いつでもロンボク島の公式ドキュメントを確認(rèn)できます:

  • Maven とロンボク島
  • IntelliJ IDEA のロンボク島

@データ

クラスを作成するとき、手動(dòng)または IDE によって提供されるショートカットを使用して、次のアクションを定期的に実行します。

  • 屬性をカプセル化し、そのゲッター メソッドとセッター メソッドを生成する
  • 空のコンストラクターと、すべての屬性を受け取る別のコンストラクターを生成します
  • equals()、hashCode()、toString() メソッドを?qū)g裝する

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

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

  • @NoArgsConstructor: 引數(shù)なし (空) のコンストラクターを生成します。コンストラクターを生成できない場(chǎng)合は、例外がスローされます。これを回避するには、次のようにアノテーションを使用します。 @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

これらのアノテーションを使用すると、クラスのすべての屬性に対して、または対応するアノテーションでマークされた屬性に対してのみゲッター メソッドとセッター メソッドを自動(dòng)的に生成できます。つまり、クラス レベルまたは屬性レベルで使用できます。

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() メソッドを自動(dòng)的に生成します。このメソッドはクラスとその屬性の文字列表現(xiàn)を次の形式で返します: ClassName(attribute1=value1,attribute2=value2, ...)。デフォルトでは、クラスのすべての非靜的屬性が結(jié)果に含まれますが、@ToString.Exclude 屬性を使用して特定の屬性を除外できます。宣言された名前ではなく屬性の値のみを表示したい場(chǎng)合は、 @ToString(includeFieldNames = false) を使用できます。

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Persona {
    private String nombre;
}

@EqualsAndHashCode

クラスのすべての屬性から、equals() メソッドと hashCode() メソッドを生成できます。屬性を除外または含める場(chǎng)合は、アノテーション @EqualsAndHashCode.Exclude および @EqualsAndHashCode.Include を使用して実行できます。それぞれ。

import lombok.*;

@Getter
@Setter
public class Persona {
    private String nombre;
    private String apellido;
}

@価値

以前の Java では、不変クラスを作成するには、クラスや屬性を最終型にするなどの一連の手順を?qū)g行する必要があり、セッター メソッドは生成されませんでした。 Lombok では、@Value アノテーションを使用して不変クラスを簡(jiǎn)単に作成できます。これは、@Getter、@ToString、@EqualsAndHashCode、および @AllArgsConstructor アノテーションを組み合わせて不変クラスを生成します。すべての屬性はプライベート最終としてマークされ、セッター メソッドは生成されません。これは @Data の不変のバリアントです。

import lombok.*;

public class Persona {
    @Getter @Setter
    private String nombre;
    private String apellido;
}

Java の最近のバージョンでは、このアノテーションはレコードの使用に比べて意味を失います。これは、レコードの目的は同じであり、レコードを使用する方が実用的であるためです。このトピックについてさらに詳しく知りたい場(chǎng)合は、ブログに記録に関するその他の投稿があります。

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.36</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

@val

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

import lombok.Data;

@Data
public class Persona {
    private String nombre;
}

型推論に Final var または単に var を直接使用すると、このアノテーションの意味が失われる可能性がありますが、これは言語(yǔ)の特性であるため、その方が便利です。これについて詳しく知りたい場(chǎng)合は、次の投稿を參照してください

public class Main {
    public static void main(String[] args) {
        Persona p1 = new Persona();
        p2.setNombre("Maria");

        System.out.println(p1.getNombre());
    }
}

@var

これは @val とまったく同じように機(jī)能しますが、変數(shù)を Final として宣言せず、単にその型を推測(cè)します。 String 型のものを宣言することはできず、それに int 型の値を割り當(dāng)てることは最終的なものではないため、型推論の概念を考慮する必要があります。繰り返しますが、このアノテーションは、Java の最近のバージョンでは var に置き換えられます。

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Persona {
    private String nombre;
}

@NonNull

このアノテーションは、クラス屬性とメソッドのパラメーターで使用できます。基本的に、屬性の値を null にすることはできないことを示します。@NonNull でマークされた屬性に null 値を割り當(dāng)てようとすると、null 値が割り當(dāng)てられることになります。 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() メソッドがある場(chǎng)合にそれを使用するリソース、または AutoCloseable または Closeable インターフェースを?qū)g裝するリソースが、そのアノテーションが配置されているコード ブロックの最後で自動(dòng)的に閉じられるようになります。ファイルやデータベースへの接続など、解放する必要があるリソースを操作する場(chǎng)合に便利です。

import lombok.*;

public class Persona {
    @Getter @Setter
    private String nombre;
    private String apellido;
}

リソースを使用して try を使用すると、この結(jié)果を手動(dòng)で取得できます。

import lombok.*;

@AllArgsConstructor
@ToString
public class Persona {
    private String nombre;
    @ToString.Exclude
    private String apellido;
}

// Output: Persona(nombre=Maria)

@ビルダー

このアノテーションを使用すると、設(shè)計(jì)パターン Builder を自動(dòng)的に生成できます。これは、複雑なオブジェクトを段階的に構(gòu)築できるようにするオブジェクトであり、オブジェクトのさまざまな屬性を設(shè)定する必要がありません。多くのパラメーターを指定してコンストラクターを呼び出します。これは、クラスに多くの屬性があり、多くのパラメーターを持つコンストラクターを使用したくない場(chǎng)合に便利です。

<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ù)として渡す値によって変更される屬性。元のオブジェクトを変更せずにオブジェクトの屬性を変更したい場(chǎng)合に便利です。

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());
    }
}

ここまでで、最も頻繁に使用できるいくつかのアノテーションを見てきました。これらのアノテーションはそれぞれ、追加の構(gòu)成を受け入れる場(chǎng)合と受け入れない場(chǎng)合があります。同様に、実験的としてマークされている他のアノテーションもあります。いずれにせよ、確認(rèn)することが重要です。 Lombok が提供するすべての機(jī)能と反復(fù)的なコード生成に関する利點(diǎn)を最大限に活用するには、公式ドキュメントを參照してください。

以上がJava の Lombok プロジェクトの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

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

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Injava、thefinalkeywordpreventsavariaibleのValue frombeingededafterassignment、ButiTsbehiviordiffersforprimitivesandobjectReferences

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

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

See all articles