gpt4 book ai didi

java - Lombok:非子类不应该访问 protected setter 吗?

转载 作者:行者123 更新时间:2023-12-02 01:00:17 27 4
gpt4 key购买 nike

我是 lombok 的新手,并且对为什么以下代码编译时没有任何错误感到困惑。由于我已指定 Setter 具有 AccessLevel.PROTECTED,难道不会出现某种编译错误吗?

另一个类.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来检查生成的setter是否确实受到“保护”。正如注释所示,java的访问级别是严格的提升;每个更宽松的级别都包括其“下方”的所有访问权限。因此:

  • private = 或多或少:此文件中的所有代码。
  • 无内容(包私有(private))= 所有私有(private) + 同一包中的所有源代码。
  • protected = 以上所有 + 子类,甚至在另一个包中。
  • 公共(public) = 一切。

免责声明:我是一名 lombok 开发人员。

关于java - Lombok:非子类不应该访问 protected setter 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60745180/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com