| @Value | アノテーションは @Data に似ています。デフォルトでは、すべてのメンバー変数はプライベートな最終変更として定義され、set メソッドは生成されません。
2. Lombok アノテーションが失敗する理由
pom.xml に Lombok 依存関係を導入した後、Lombok プラグインをインストールする必要もあります ,restart IDEA が有効になります。
統合プロセス
1. Lombok 依存関係の導入:
次のコードをコピーして pom.xml に挿入し、Maven ウェアハウスが依存関係を自動的にダウンロードしてインストールするまで待ちます。 、自動パッケージインポートがない場合は、「手動でインポート」をクリックします。
<!--导入lombok小辣椒驱动依赖,用来生成get/set等方法依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<!--<optional>true</optional>-->
<version>1.18.12</version>
<scope>provided</scope><!--自动生成有参无参构造-->
</dependency>
2. Lombok プラグインをインストールします
[ファイル]->>[設定]->>[プラグイン]->>[検索]をクリックします。 IDEA 内 Lombok がプラグインをインストールした後、IDEA を再起動します;
3. Lombok を使用して、プロパティのゲッター/セッターおよびその他のメソッド プログラム コード例を生成します
a. Lombok Entity クラスを使用して書かれていない (プログラムは太くて醜い)
IDE に付属のショートカット キーを使用して、ゲッター/セッター メソッドを自動的に生成します:
# #
package com.dvms.entity;
/*
*文件名: Anglerecord
*创建者: CJW
*创建时间:2020/6/6 14:40
*描述: 记录
*/
public class Record {
private String time;
private String device;
private String state;
public Record(String time, String device, String state) {
this.time = time;
this.device = device;
this.state = state;
}
public Record() {
}
public String getTime() {
return this.time;
}
public String getDevice() {
return this.device;
}
public String getState() {
return this.state;
}
public Record setTime(String time) {
this.time = time;
return this;
}
public Record setDevice(String device) {
this.device = device;
return this;
}
public Record setState(String state) {
this.state = state;
return this;
}
public boolean equals(final Object o) {
if (o == this) return true;
if (!(o instanceof Record)) return false;
final Record other = (Record) o;
if (!other.canEqual((Object) this)) return false;
final Object this$time = this.getTime();
final Object other$time = other.getTime();
if (this$time == null ? other$time != null : !this$time.equals(other$time)) return false;
final Object this$device = this.getDevice();
final Object other$device = other.getDevice();
if (this$device == null ? other$device != null : !this$device.equals(other$device)) return false;
final Object this$state = this.getState();
final Object other$state = other.getState();
if (this$state == null ? other$state != null : !this$state.equals(other$state)) return false;
return true;
}
protected boolean canEqual(final Object other) {
return other instanceof Record;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $time = this.getTime();
result = result * PRIME + ($time == null ? 43 : $time.hashCode());
final Object $device = this.getDevice();
result = result * PRIME + ($device == null ? 43 : $device.hashCode());
final Object $state = this.getState();
result = result * PRIME + ($state == null ? 43 : $state.hashCode());
return result;
}
public String toString() {
return "Record(time=" + this.getTime() + ", device=" + this.getDevice() + ", state=" + this.getState() + ")";
}
}
b. はじめに Lombok 生成方法 (プログラムはスリムで非常に快適に見えます)必要に応じて手動でアノテーションを追加するか、右クリック->>リファクタリング->>Lomok-を実行できます。 》
package com.dvms.entity;
/*
*文件名: Anglerecord
*创建者: CJW
*创建时间:2020/6/6 14:40
*描述: 记录
*/
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true) //链式调用
public class Record {
private String time;
private String device;
private String state;
}
利点と欠点 (考えられる問題は解決策です)利点: Lombok は getter/setter、equals、toString などを自動的に生成できます。アノテーションを使用してコンパイル時にプロパティのメソッドを作成できるため、これらのコードを手動で再構築する手間がなくなり、プログラム エンティティ クラス (entity/pojo) コードがより「スリム」でスタイリッシュに見えます。
欠点 (考えられる問題): 個人開発の場合、次の問題が発生する可能性があります:
1.Lombok は現在 JDK1.8 をサポートしていますが、JDK をアップグレードすると無効になる可能性があります。解決方法: a. IDE に付属の Alt Insert ショートカット キーを使用して、getter/setter、equals、hashCode、toString、およびコンストラクター メソッドを生成します。
最新バージョンでは、DeLombok を使用してこのツールを使用してこれらのメソッドを生成できます。右クリックして「リファクタリング」>「DeLombok:
」を選択するか、コマンドを使用します:java -jar lombok.jar delombok src -d src-delomboked
Lombok アノテーションによって実装されたクラス ファイルを Java ソースに変換します。ロンボク文書を使用しないもの。 Lombok を使用すると JavaBean のカプセル化を簡素化できますが、可読性に影響します。さらに、このアノテーション @AllArgsConstructor は使用しないようにしてください。このアノテーションは、オブジェクトの初期化時にクラス内のすべてのプロパティを変更する機会を外部に与える巨大なコンストラクターを提供します。これは非常に安全ではありません。 Java クラス内のオブジェクトは Revise しないでください。同時に、Java クラスに複数のプロパティがある場合、Lombok は複数のパラメーター コンストラクターを Java クラスに挿入し、コンストラクター パラメーターの順序は Lombok によって完全に制御されます。 3. Lombok を使用して Javabean コードを作成した後、この Javabean に依存する他のコードは Lombok 依存関係を導入する必要があり、コード結合度が増加します。同時に、Lombok プラグインを IDE にインストールする必要もあります。 4. 共同開発の場合は、次の問題に注意する必要があります: Lombok プラグインをプログラム コードに導入する場合、他の人も Lombok プラグインをダウンロードして導入する必要があります。 -in にしないと、Java コードが正しく実行されない可能性があります。