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