10

我在 Java 中使用 IO 做了很多工作,在寻找将原语转换为字节数组并返回的代码之后,我java.io.Bits在 Java 源代码托管网站之一上找到了源代码。快速浏览后,我意识到这正是我需要的,除了它是包私有的。所以我制作了一份我公开的副本,存储在我的项目包中并使用(我向你保证,只在个人项目中)。我觉得它非常有用。

我的问题是,为什么这个包是私有的?我可以看到它对于使用 IO 的人非常有用,而且我认为将其更改为公共的可见性(在 rt.jar 中)没有任何缺点。或者是否有等价物(请不要提及其他库)?

这是一个随机选择的网站的链接,该网站具有 Java 源代码:http java.io.Bits: //grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/io/Bits.java

4

2 回答 2

9

您肯定需要询问其中一位 Java 开发人员,但是通过将其设为私有包,API 可以被视为“内部”——即它可能随时更改或消失。这意味着 API 可以相对快速地开发,并且不需要经过公共 API 需要经过的相同的相对彻底的测试过程(因为一旦发布,它们就永远卡在那里了。)

简而言之,将 API 公开具有长期影响,而且它需要的工作量远比点击开关要多得多。

我会冒险猜测它最初是作为一组对 IO 包中的其他一些类有用的“被黑客攻击”的函数组开始的,并且从那时起就一直呆在那里。

于 2014-09-12T17:56:14.167 回答
4

当然,它是包私有的,但也有公开相同行为的公共 API,ByteBuffer.wrap(array).getInt(index)例如ByteBuffer. 与尝试从 Java 包装或复制内部实现细节相比,您几乎可以肯定地使用正确设计、记录良好的公共 API 更好。

于 2014-09-12T18:16:51.607 回答