我是lombok的新手,并对为什么以下代码编译时没有任何错误感到困惑。既然我已将Setter指定为具有AccessLevel.PROTECTED
,那么应该不会出现某种编译错误?
AnotherClass.java
@NoArgsConstructor
@AllArgsConstructor
public class AnotherClass {
@Getter @Setter
private int width;
@Getter(AccessLevel.PUBLIC) @Setter(AccessLevel.PROTECTED)
private int height;
@Getter @Setter @NonNull
private String name;
}
Main.java
public static void main(String[] args) {
AnotherClass instance1 = new AnotherClass(2, 1, "instance1");
System.out.println("Fetching height of instance1: " + instance1.getHeight());
instance1.setHeight(3);
System.out.println("Fetching height of instance1: " + instance1.getHeight());
}
输出:
Fetching height of instance1: 1
Fetching height of instance1: 3
最佳答案
您可以使用delombok
来检查生成的二传手确实受到“保护”。如注释所示,java的访问级别是严格的提升;每个允许的级别都包括其下的所有访问权限。从而:private
=或多或少:此文件中的所有代码。
无(包私有)=所有private
+同一包中的所有源代码。protected
=以上所有+子类,即使在另一个包中也是如此。public
=一切。
免责声明:我是lombok开发人员。