java - 有没有办法将 java 函数导出到库中的其他包,而不是库的用户?

标签 java visibility

所以,这是一个例子。我在 HTTP 包中有一个库。我定义了库的子部分,例如包 HTTP.TCPProtocol。现在我想使用 HTTP 包中的 TCPProtocol,这意味着我必须公开 TCPProtocol 功能。同时,不应将此功能导出给库的用户。

我该怎么做?我不想将我的整个库放入一个包中,因为我觉得单独的子包确实使代码更加结构化,并且在 eclipse 中导航更容易。但是四处浏览,我找不到一种方法可以在我的项目中公开函数,但不能将它们导出到我的项目之外。

编辑:鉴于我能够想出一个更好的例子,我正在更新 OP。

最佳答案

一种简单的方法是将您的“实用程序”方法列入白名单,以便它们仅接受特定类型的调用者实例。

package gameengine;

interface Whitelisted {} // marker

然后你的方法:

public void myMethod(Whitelisted caller, String arg)

并调用:

package gameengine.network;

class Foo implements Whitelisted {
...
Someclass.myMethod(this, "foo");

关于java - 有没有办法将 java 函数导出到库中的其他包,而不是库的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11322663/

相关文章:

Java 7 使用可变参数重载

java - 无法使用 Java 11 在 IntelliJ 中启动 JavaFX 应用程序

css - 纯 CSS。子元素的可见性取决于父类。是否可以?

wpf - IsMouseOver、可见性和控制尺寸

多个线程之间的 Java 数组元素可见性

HTML/CSS - 滚动条隐藏,但不折叠

java - 使用java中的运算符将字符串解析为mongodb查询文档

java - WCF Java 客户端和 IncludeTimestamp

asp.net - Gridview 页脚不可见

java - 替代 ZIP 作为项目文件格式。 SQLite 还是其他?