gpt4 book ai didi

java - java中有没有办法限制一个包对其他包的可见性

转载 作者:行者123 更新时间:2023-11-30 07:45:39 25 4
gpt4 key购买 nike

我有 2 个包 > work 和 utils,我使用 utils 来处理我需要在工作中的类中执行的操作,工作的类和方法是我想要提供给运行此 jar 的用户的,但是我不希望他们访问 util 的类和方法。如果我将它们公开,用户将能够看到 util 中的所有方法,否则我将无法在“工作”中使用它们。如果我将它们放在一个包中,一个包中就会有太多类,所以如果有解决方法,请帮忙。我在这里也看到了类似的问题,但我没有找到任何答案,除了向客户记录这一点是我能找到的最好的答案。或者是否有人可以为此提出更好的设计。

最佳答案

Java 中有四个访问修饰符。明显的publicprivate,然后是protectedpackage-private。 protected 适用于同一包中的类和子类,而 package private(未显式声明修饰符)仅适用于包。所以 - 不,你不能仅使用访问修饰符来完成你所要求的事情。

这给你留下了几个选择。

A) 一旦我开始听到“实用程序类”,听起来好像您的 API 设计中可能存在问题,而不是实现中。公开类(class)有什么问题吗?听起来你正试图隐藏一些凌乱或令人困惑的设计。

B) 将“实用”函数捆绑到抽象基类中。这样,具体实例就可以继承功能,并利用protected

C) 让您的实用程序类通过具有包私有(private)构造函数的对象进行通信 - 并且在您的“工作”包中声明。这样,其他包就无法构造使用您的实用程序所需的对象。

D)使用反射调用实用程序类上的私有(private)方法(非常痛苦)。

到目前为止我的选择是A)。对于实用程序类来说,一个干净整洁的公共(public) API 绝对没有任何问题。 JDK 中有 10,000 个公共(public)类。听起来您似乎过于关注“如何”而不是“什么”?

关于java - java中有没有办法限制一个包对其他包的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33986506/

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