gpt4 book ai didi

java - 为什么 Java 缺少访问说明符?

转载 作者:行者123 更新时间:2023-12-04 15:50:52 25 4
gpt4 key购买 nike

有谁知道为什么缺少 Java:

  • 允许类和所有子类访问但不允许同一包中的其他类访问的访问说明符? (保护负)
  • 允许类、同一包中的所有类以及任何子包中的所有类访问的访问说明符? (默认加)
  • 将子包中的类添加到当前允许 protected 访问的实体的访问说明符? (加保护)

我希望我有比 protected 和默认更多的选择。特别是,我对 Protected-plus 选项很感兴趣。

假设我想使用 Builder/Factory 模式类来生成一个对象,该对象具有许多指向其他对象的链接。对象上的构造函数都是默认的,因为我想强制你使用工厂类来生成实例,以确保链接正确完成。我想将工厂分组到一个子包中,以将它们保持在一起并与它们正在实例化的对象区分开来——这对我来说似乎是一个更干净的包结构。

目前没有办法。我必须将构建器与它们正在构建的对象放在同一个包中,以便获得对默认值的访问权限。但是将 project.area.objectsproject.area.objects.builders 分开会很好。

那么为什么 Java 缺少这些选项呢?而且,无论如何都可以伪造它?

最佳答案

Does anyone understand why Java is missing:

  • ...
  • An access specifier which allows access by the class, all classes in the same package, AND all classes in any sub-package? (Default-plus)
  • An access specifier which adds classes in sub-packages to the entities currently allowed access by protected? (Protected-plus)

Java 的包不是分层的——没有子包(即使目录结构表明了这一点)。其他包“内部”的包并不是真正的子包,它们只是名称恰好以与“父”包相同的前缀开头的包。您也可以在导入包时看到这一点;像这样的声明

import java.awt.*;

仅导入包 java.awt 中的所有内容,而不是例如 java.awt.image 中的所有内容。

因此也没有适用于子包的访问说明符。

关于java - 为什么 Java 缺少访问说明符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3039345/

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