使 java 方法仅对特定类可见

2023-11-30

我有一个管理器类,负责管理某种类型的对象。为此,它需要操作这些对象,但这些对象与管理器没有任何关系,因此从技术上讲,它们位于单独的包“project.managers”和“project.objects”中。重要的是,所讨论的对象只能由管理人员操作,而不能由其他任何地方操作,但需要可由项目中的所有其他类访问。

因此,我希望管理人员能够访问操作方法,但限制对其他所有类的访问。最明显的一种是将管理器类和对象类移到同一个包中,并声明受保护的操作方法,但由于管理器和对象是完全独立的实体,因此它们在哲学上不适合那里。

(部分原因是,每当我自动完成相关对象上的代码时,我希望 IDE 停止向我显示操作方法,因此我总是必须通过管理器进行路由,以便每当我更改相关对象时,相应的表都会正确更新) 。

有什么想法吗?或者在任何情况下,明显的方法都是最好的吗?


为什么不提供一个名为

ManagerFunctions

另一个叫

ClientFunctions

您管理的对象将实现both这些。

当您创建托管对象时,您可以传递它们,但仅作为对的引用ClientFunctions。然而,管理器对象将它们称为ManagerFunctions并因此可以访问其“托管”功能。适当的转换将简单地公开适当的方法。

您的 IDE 将根据这些对象的引用方式自动向您提供适当的方法。

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

使 java 方法仅对特定类可见 的相关文章

随机推荐

  • AspectJ 和 CDI

    我正在尝试找出一种将 bean 注入某个方面的方法 I mean public class Greeter public String greet String name public aspect GreeterAspect Inject
  • 使用一系列角度创建循环列表 python

    我有一个列表列表 其中包含角度集的下限和上限 就像是 1 22 2 24 359 15 360 21 总共360个元素 现在我想检查从 1 到 360 的每个角度 列表中包含该角度的元素 我正在考虑使用下限和上限来创建列表的所有元素rang
  • JAVA NIO Bytebuffer.allocateDirect() 对 int 的大小限制

    我正在尝试制作堆外内存缓冲区 我想要非常大的缓冲区 比如 10GB 我听说jvm堆有时会因为full GC而冻结 所以 我尝试用 java nio ByteBuffer 制作缓冲区 但是 我遇到了很大的困难 java nio ByteBuf
  • Stata:变量中相同值连续出现的最大次数

    我的数据集中的观察结果是玩家和二进制变量temp1如果玩家采取了行动 则 up 等于 1 否则等于 0 我想计算每个玩家的最大连续移动次数 simulation playerlist temp1 temp2 temp3 temp4 temp
  • Code::阻止详细构建

    我想查看发送到的实际命令g 在 Code Blocks 构建期间 我想确切地了解它在编译和链接步骤中使用的命令行参数 并且我不想在构建设置 GUI 中进行操作 或者 将 Code Blocks 项目转换为等效的 Makefile 也可以 但
  • 通过 REST API 的 Cosmos DB IN 子句

    我无法使用以下方式制定搜索查询INAzure Cosmos 文档 DB 的子句 Query query SELECT FROM LOADS l WHERE l schedulingSystem in schedulingSystem par
  • 如何向量化矩阵的行对角化

    我有一个 n m 矩阵 我想将其转换为 mn m 矩阵 结果的每个 m m 块包含每行的对角线 例如 如果输入是 1 2 3 4 5 6 输出应该是 1 0 0 2 3 0 0 4 5 0 0 6 当然 我不想自己一步步组装矩阵for lo
  • 谷歌云python sdk安装错误-SSL证书错误

    尝试在 Windows 10 上为所有用户安装 Google Cloud SDK Python 出现以下错误 这是新机器并开始全新建造 在此之前安装了python 2 7版本 请帮我解决这个问题 输出文件夹 C Program Files
  • Go Template ParseFiles 函数解析多个文件

    如果我将两个或多个文件传递给 Go Template 的 ParseFiles 函数会发生什么 func Template ParseFiles 它有帮助说 ParseFiles 解析命名文件并将结果模板与 t 相关联 如果发生错误 则解析
  • 对从托管代码创建的事件的 WaitForSingleObject 的访问被拒绝

    如何在 C 中创建命名事件对象 以便我可以在单独的 C 进程中等待它 我的流程 A 的简化 C 代码 EventWaitHandle evt new EventWaitHandle false EventResetMode AutoRese
  • Rails 5 - 使用多态关联 - 渲染视图

    我正在尝试学习如何在 Rails 5 应用程序中使用多态关联 我最近问this问题 但我对其进行了多次编辑以显示我正在尝试的所有内容 它已经变得混乱 我有名为 组织 提案 和 包 Bip 的模型 这些协会是 组织 has many bips
  • Android:如果同时请求 GPS 和网络,网络提供商将无法工作

    if gps enabled locationManager requestLocationUpdates LocationManager GPS PROVIDER 0 0 locationListenerGps if network en
  • iOS 应用程序通过 USB 电缆连接与 OSX 中运行的应用程序进行通信

    iOS SDK 是否提供了一种方法让 iOS 应用程序通过 USB 电缆连接与 OSX Windows 中运行的应用程序通信 或者 套接字是唯一的选择 如果您想通过 USB 与 iOS 中的 OS X 程序交互 PeerTalklib 似乎
  • 在 Android 上解析 SHOUTcast 7.html 元数据

    我正在尝试使用以下 URL 检查 SHOUTcast 流的状态 http 85 17 167 136 8684 7 html 返回如下数据 7 1 77 100 7 128 44 0 7908 340 811 Follow Us visio
  • 如何在 SQL Management Studio 中指定不同的端口号?

    我正在尝试连接到不在端口 1433 上的 Microsoft SQL 2005 服务器 使用 SQL Management Studio 连接到服务器时如何指示不同的端口号 127 0 0 1 6283 ip和端口之间添加逗号
  • ASP.NET 的自定义文件扩展名 - 需要帮助!

    我的 Apache 2 2 服务器上运行了 modaspdotnet 因此它可以很好地运行 ASP NET 和 MySQL 但是 我想做的是提供具有其他扩展名的内容 而不仅仅是默认的 aspx 例如myfile customextensio
  • Android,当我使用应用内更新时发生InstallException

    Google I O 2019 新增应用内更新 所以我尝试按照文档使用它 https developer android com guide app bundle in app updates 但它发送了一个 InstallExceptio
  • vue中无法使用插件

    我想在浏览器中管理cookie并使用这个外部插件vue cookies 但是如果我在某个 vue 文件中调用它的方法 this cookies get 我会在浏览器中收到错误 TypeError Cannot set property co
  • 为 ARM 编写的原生 Android 代码如何在 x86 上运行?

    摩托罗拉刚刚发布了一款基于 x86 的 Android 手机 我有点困惑为 ARM 编写的本机应用程序 库 例如 netflix 如何在这款手机上运行 如果有人可以解释 我将不胜感激 是的 ARM 本机代码在 Intel x86 上运行 使
  • 使 java 方法仅对特定类可见

    我有一个管理器类 负责管理某种类型的对象 为此 它需要操作这些对象 但这些对象与管理器没有任何关系 因此从技术上讲 它们位于单独的包 project managers 和 project objects 中 重要的是 所讨论的对象只能由管理