class Employee {
public string Name { get; set; }
public int Age { get; set; }
}
とかできる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>
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 アノテーションをつけると、バイトコードは
のようになる。
NetBeans? もこのように認識しているので、他のクラスからもコンストラクタや getter/setter を使える
enum も OK か調べるために、Bean には、Sex 型のフィールドも入れてみた
package com.mycompany.lombokexam;
public enum Sex {
Male, Female
}
全く問題なし
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)
すげー
package com.mycompany.lombokexam;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LogExam {
// private static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExam.class);
public static void main(String args[]) {
log.info("Hello Lombok");
}
}
22:39:08.929 [main] INFO com.mycompany.lombokexam.LotExam - Hello Lombok
@CommonsLog? | org.apache.commons.logging.Log |
@Log | org.apache.commons.logging.Log |
@Log4j | org.apache.log4j.Logger |
@Log4j2 | org.apache.logging.log4j.Logger |
@Slf4j | org.slf4j.Logger |
@XSlf4j | org.slf4j.ext.XLogger |
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");
}
}