我已经在Java中完成了很多IO,在寻找将原语转换为字节数组的代码后,我在其中一个Java源代码托管网站上找到了java.io.Bits
的源代码。快速浏览一下后,我意识到它正是我需要的,除了它的包私有。所以我制作了一份我公开的副本,存储在我的项目包中并使用(仅限个人项目,我保证)。我发现它非常有用。
我的问题是,为什么这个包是私有的?我可以看到它对于使用IO工作的人来说真的很有用,我认为改变它对公众的可见性没有任何不利之处(在rt.jar中)。或者是否有一个等价物(并且请不要提及其他库)?
这是指向随机选择的网站的链接,该网站包含java.io.Bits
的Java来源:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/io/Bits.java
答案 0 :(得分:8)
您必须要求其中一个Java开发人员确定,但通过将其打包为私有,可以将API视为“内部” - 即它可能随时更改或消失。这意味着API可以相对快速地开发,并且不需要经历公共API需要经历的相同的相对彻底的测试过程(因为一旦它们被释放,它们就会被困在那里。)
简而言之,公开API会产生长期影响,而且只需要点击一个开关就需要更多的工作。
我会冒险猜测它起初是一个“黑客攻击”组合,对IO包中的其他几个类有用,并且从那时起就一直呆在那里。
答案 1 :(得分:3)
它是包私有的,当然,但有公共API可以暴露相同的行为,例如: ByteBuffer.wrap(array).getInt(index)
以及ByteBuffer
上的其他方法。使用设计合理,文档齐全的公共API几乎肯定比尝试从Java包装或复制内部实现细节更好。