默认情况下,当我们使用Lombok@Getter和@Setter注解时,将使用publicaccess修饰符创建getter和setter 。但是,我们可以通过设置改变访问修饰符AccessLevel的@Getter和@Setter注释。对于访问级别可用的选项有AccessLevel.PUBLIC,AccessLevel.PROTECTED,AccessLevel.PACKAGE,AccessLevel.PRIVATE。这些枚举值对应于Java的access修饰符。而AccessLevel.NONE会禁用getter和setter方法的生成。
package org.nhooo.example.lombok.domain; import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Person { @Setter(AccessLevel.PROTECTED) private String firstName; private String lastName; private String gender; @Getter(AccessLevel.PRIVATE) private int age; }
我们如何使用Person以下代码段中的类显示:
package org.nhooo.example.lombok; import org.nhooo.example.lombok.domain.Person; public class PersonDemo { public static void main(String[] args) { Person person = new Person(); person.setLastName("Bar"); person.setGender("M"); person.setAge(20); System.out.println(person.getFirstName()); System.out.println(person.getLastName()); System.out.println(person.getGender()); } }
如果尝试查看该类的生成类,则Person可以运行以下命令来反汇编该类。
javap -p -cp . org.nhooo.example.lombok.domain.Person
并且我们获得了以下javap命令输出。如我们所见,该setFirstName()方法具有protected访问修饰符,并且该getAge()方法具有private访问修饰符。另一个mutator和accessor方法都设置为public访问修饰符。
public class org.nhooo.example.lombok.domain.Person { private java.lang.String firstName; private java.lang.String lastName; private java.lang.String gender; private int age; public org.nhooo.example.lombok.domain.Person(); public java.lang.String getFirstName(); public java.lang.String getLastName(); public java.lang.String getGender(); public void setLastName(java.lang.String); public void setGender(java.lang.String); public void setAge(int); protected void setFirstName(java.lang.String); private int getAge(); }
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>