Java如何使用Lombok生成getter和setter?
下面的代码片段向您展示了项目如何使用Lombok的@Getter和@Setter注解在POJO(纯旧java对象)类中生成Getter和Setter方法。使用这些注解就不需要手动实现mutator和accessor方法。尽管大多数IDE允许您生成这些方法,但使用Lombok会使类看起来更干净,尤其是在字段列表很长的情况下。
下面是一个简单的User类和一些字段。我们将在类级别上使用@getter和@setter注解。这将为类中的任何非静态字段生成getter和setter方法。
package org.nhooo.example.lombok.domain; import lombok.Getter; import lombok.Setter; import java.time.LocalDate; @Getter @Setter public class User { private Long id; private String username; private String password; private LocalDate lastLogin; private boolean active; }
类中的每个字段都有相应的getter和setter。例如,username字段将具有getUsername()和setUsername()方法。如果字段类型是boolean,比如active,它将生成setActive()和isActive()方法。
因为Lombok已经处理了accessor和mutator,所以我们可以像手动实现getters和setters方法一样使用User类。
package org.nhooo.example.lombok; import org.nhooo.example.lombok.domain.User; import java.time.LocalDate; public class UserDemo { public static void main(String[] args) { User user = new User(); user.setId(1L); user.setUsername("foo"); user.setPassword("secret"); user.setLastLogin(LocalDate.now()); user.setActive(true); System.out.println(user.getId()); System.out.println(user.getUsername()); System.out.println(user.getPassword()); System.out.println(user.getLastLogin()); System.out.println(user.isActive()); } }
如果出于某些原因,您希望禁用特定字段上的getter和 setter,或者希望更改访问级别,则可以为@getter和@setter注使用AccessLevel 枚举值。例如,在下面的代码片段中,用户名将没有getter和setter,而lastLogingetter和setter 将具有受保护的访问修饰符。访问级别包括PUBLIC、MODULE、PROTECTED、PACKAGE、PRIVATE和NONE。
package org.nhooo.example.lombok.domain; import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; import java.time.LocalDate; @Getter @Setter public class User { private Long id; @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) private String username; private String password; @Getter(AccessLevel.PROTECTED) @Setter(AccessLevel.PROTECTED) private LocalDate lastLogin; private boolean active; }
Maven依赖
<!--https://search.maven.org/remotecontent?filepath=org/projectlombok/lombok/1.18.4/lombok-1.18.4.jar--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version> </dependency>