これは何?

Maven プロジェクトを Lombok 対応にする

dependency に Lombok を追加するのみ。スコープは provided にする (実行時には必要ないため)
maven-compiler-plugin が必要。忘れずに!

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>LombokExam</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.8</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.5.1</version>
                    <configuration>
                        <source>${maven.compiler.source}</source>
                        <target>${maven.compiler.target}</target>
                    </configuration>
                </plugin>
                <plugin>
                    <!--
                      update pom.xml  : $ mvn versions:use-latest-versions
                      show updatables : $ mvn versions:display-dependency-updates
                    -->
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>versions-maven-plugin</artifactId>
                    <version>2.2</version>
                </plugin>            
            </plugins>
        </pluginManagement>
    </build>    
</project>

Lombok による Bean の拡張

package com.mycompany.lombokexam;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NonNull;

@Data
@AllArgsConstructor
public class Employee {
    @NonNull
    private String name;
    private int age;
    private Sex sex;
}

フィールドのみの Bean に @Data アノテーションをつけると、バイトコードは

employee.png

のようになる。
NetBeans? もこのように認識しているので、他のクラスからもコンストラクタや getter/setter を使える


enum も OK か調べるために、Bean には、Sex 型のフィールドも入れてみた

package com.mycompany.lombokexam;

public enum Sex {
    Male, Female
}

全く問題なし

Lombok によって拡張された Bean を使ってみる

package com.mycompany.lombokexam;

public class App {

    public static void main(String[] args) {
        Employee e = new Employee("Sachi",32,Sex.Female);        
        System.out.println(e.toString());
    }
}

実行結果

Employee(name=Sachi, age=32, sex=Female)

すげー

Lombok のよく使うアノテーション

Lombok のその他のアノテーション

Lombok を使う上での留意点

追記 Logger の初期化は良いかも

追記 調子に乗って val 変数は使わないほうが良いかも

package com.mycompany.lombokexam;

import java.util.ArrayList;
import lombok.val;

public class VarExam {
    public static void main(String args) {
        val array = new ArrayList<String>();
        array.add("apple");
        array.add("orange");
        array.add("banana");        
    }
}

参考文献


Java#Jakarta


添付ファイル: fileemployee.png 2780件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Last-modified: 2017-06-11 (日) 22:57:32 (2744d)
Short-URL:
ISBN10
ISBN13
9784061426061