Java定义显式包私有修饰符[关闭]

2024-01-11

显然Java有一个Access级别包私有 https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html这是通过不添加任何显式修饰符来实现的。

但是有没有办法显式添加这个修饰符呢?这有点令人困惑,我们需要omit当我们只想使用包中的成员时的访问级别。

如果没有办法,为什么包私有决定作为默认级别?

例如,如果默认级别是公共的,那么我们会更有意识地定义相关的访问级别。

这不是重复的问题为什么使用它 https://stackoverflow.com/questions/28414803/java-default-access-level-package-private-access-why-it-is-used-for,因为我知道为什么,只是不知道为什么它是隐式定义而不能显式定义。

EDIT

您可以使用 Lombok 显式定义它@PackagePrivate https://projectlombok.org/api/lombok/experimental/PackagePrivate.html

用于指示带注释的实体具有包私有访问级别的明确意图。目前由 FieldDefaults 和 Value 使用,以避免将字段设为公共、受保护或私有字段之一。

@PackagePrivate String thanksLombok;

在我看来,

这将是bad如果默认是

public因为您可能会错过指定修饰符和原本打算私有的代码片段,或者某些东西可以被世界访问。此外,这可能违反 OOP 的核心概念之一 -封装.

private因为通常您会希望与其他类交互,而不是在一个类中编写所有内容。

protected因为我希望(个人观点)文件夹(包)中的内容可以在文件夹内访问,而不是驻留在某个完全不同的目录中的类(子类)中。


如果我再做一次,我会选择 package-private 作为默认值,因为如果有些东西在一起(在同一个包中),其意图可能是它们应该能够相互通信。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java定义显式包私有修饰符[关闭] 的相关文章

随机推荐

  • jquery 模式对话框 onclick?

    我要这个 http jqueryui com demos dialog modal message http jqueryui com demos dialog modal message 当您单击 ClickMe 时发生 这个怎么做 di
  • Firebase 数据库和应用本地化

    我正在为 iOS 和 Android 平台构建一个问答游戏 我希望能够处理本地化 我正在使用 Firebase 的实时数据库解决方案来解决游戏中存在的所有问题 我将问题硬编码到 Firebase 的数据库中 每个问题对象都有 2 个参数 I
  • 基于多个切片器值 Power BI 显示用户计数

    我正在研究一个Viewership table它告诉客户手表资产的数量 有两个资产过滤器 一种用于观看 另一种用于未观看 根据资产过滤器 我需要显示观看节目的客户数量和未观看节目的客户数量 下面是我用过的方法 首先 创建一个新表 Asset
  • 用 Fortran 编写矩阵

    我需要用 FORTRAN 输出一个矩阵 我有一个计算值的工作代码 但我得到的不是矩阵 而是一列 矩阵很大 ixj 2000x2000 这是我的示例代码 open 19 file results1 txt status old positio
  • firestore 是否已删除单个文档每秒写入 1 次的软限制?

    Firestore 始终对单个文档有每秒 1 次写入的软限制 这意味着 对于诸如每秒更新一次以上的计数器之类的事情 推荐的解决方案是分片计数器 看着Firestore 限制文档 https firebase google com docs
  • 使用 ASP.NET MVC 上传图像

    我需要上传图像作为 MVC 应用程序中创建操作的一部分 图像将存储在文件服务器中 数据库将包含该图像的路径 我计划使用以下标签来获取文件 gt
  • 如何将 2 个图像附加到布局底部

    我想附上2张图片 第一个位于左下角 其他位于右下角 但我希望这些图像在底部是核心的 这样如果我滚动页面 图像应该保留在同一位置 动态地 我成功地回答了我自己的问题 所以我特此为所有用户提供代码 它可以工作 所以拥有代码并享受 LinearL
  • Ionic 2 - Angular 2 http 标头未随请求一起发送

    我正在使用 Ionic 的最新测试版本 并且我已经为我的 api 服务器完成了 http post 方法 但标头不会随请求一起发送 我使用的代码如下 Ionic 版本 Beta 8 和 Angular 版本 rc 3 import Page
  • 将 UTF-8 字符串拆分为块

    我想将 UTF 8 字符串拆分为大小相等的块 我想出了一个解决方案 正是这样做的 现在我想简化它 如果可能的话 删除第一个收集调用 有办法做到吗 fn main let strings chars collect
  • Flask 中 return render_template 和 jinja 模板之间的区别

    我见过两种在 Flask 中路由 HTML 页面的方法 要么像这样声明一个名为 template 的变量 def home template jinja env get template hello form html return tem
  • 严格模式下不允许使用八进制文字

    我正在使用 Angular 2 当我在 SCSS 文件中使用它时 效果很好 text after content 00a0 00a0 然而 当我把它搬进去时 styles 表明 未捕获的语法错误 严格模式下不允许使用八进制文字 我知道代码s
  • 从数组 javascript 中删除元素(相反交集)

    昨天晚上我提出了这个问题从数组javascript中删除元素 https stackoverflow com questions 29711165 delete elements from array javascript但我错误地认为 我
  • 渲染与部分渲染和良率之间的差异

    我已经从 Rails 指南中读到了它 已经看过 Micheal Hartel 的书 现在又从 Rails View 的书中读到了它 但我仍然感到困惑 有一个 footer html erb文件 因此它是一个 部分 并且在它编写的代码中 所以
  • C 中指向二维数组的指针

    我知道有几个关于提供良好 和有效 解决方案的问题 但恕我直言 没有一个问题清楚地说明实现这一目标的最佳方法是什么 所以 假设我们有一些二维数组 int tab1 100 280 我们想要创建一个指向这个二维数组的指针 为了实现这一目标 我们
  • iOS - 将 NSDictionary 写入 Localized.strings

    这个问题是那个问题的连续体 iOS 我可以在运行时更改 localized strings 内容吗 https stackoverflow com questions 13625008 ios could i change the loca
  • 手工制作的强类型 ADO.net 数据表 - 它可以更干净吗?

    我最近遇到一个非常简单的类型化数据表 不使用 XSD 我丢失了作者的 URL 所以我不能相信他 但看起来有很多重复的代码 例如添加 删除 GetNewRow 方法 我尝试将重复的方法推入超类中 但由于 Employee 需要通用 因此出现了
  • 为什么 F# printfn 没有通过 Console.WriteLine 实现?

    我注意到使用 F printfn 时出现意外行为 它似乎将格式字符串分解为块 并为每次调用 printfn 多次调用 Console Write 我希望它格式化整个字符串 然后调用 Console WriteLine 一次 我注意到这一点是
  • 将 ASP.NET MVC ViewResult HTML 渲染为图像,无需第三方组件

    有没有办法将 ViewResult 或 PartialViewResult 渲染为图像 我尝试将 ViewResult 作为字符串获取 并且得到了一个包含 html 的字符串 但我需要将该 html 渲染为图像 如果可能的话 带样式和图像
  • Angular2 中的文件内容

    我正在编写一个小应用程序来执行一些 XML 文件聚合 用户删除一些具有相同结构的 XML 文件 编辑一些常见标签 然后我向他们返回一个 xml 其中包含元素列表中的所有所需数据 我正在使用 ng2 file upload 来进行文件删除 但
  • Java定义显式包私有修饰符[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 显然Java有一个Access级别包私有 https docs oracle com javase tutorial java javaOO a