我正在使用ASM-5读取类文件并生成UML图的项目。我在测试中遇到了问题,看看我们是否正确阅读。我正在测试这个String类。文档中显示的唯一字段是CASE_INSENSITIVE_ORDER。这似乎很腥,但我写了我的测试,以检查该字段是否仅读取了该字段,并且出现了5个字段:value:char [],hash:int,serialVersionUID:long,serialPersistentField:ObjectStreamField和CASE_INSENSITIVE_ORDER:比较。java有什么私人领域?
这4个额外字段来自哪里,为什么他们不在oracle文档中?当我尝试使用反射来查看字符串类的字段时(我只能看到CASE_INSENSITIVE_ORDER),我也无法访问它们。这似乎是应该更好记录的东西。
为什么'private'字段在文档中?它们是实现细节,不是API的一部分。 –
文档是关于如何使用课程的,因此您不需要在其中包含专用字段。如果你想知道实现细节,你可以看看[代码](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/lang/ String.java?av=f)。 – azurefrog
另见:[Encapsulation](https://en.wikipedia.org/wiki/Encapsulation_(computer_programming))。 – Powerlord