java有哪些私有字段?

时间:2015-12-18 18:26:32

标签: java string

我正在开发一个使用ASM-5读取类文件并生成UML图的项目。我在测试中遇到了一个问题,看看我们是否正确阅读。

我在String类上测试它。文档中显示的唯一字段是CASE_INSENSITIVE_ORDER。这看起来很可疑,但我编写了测试来检查该字段是否只读取了该字段,并显示了5个字段:value:char [],hash:int,serialVersionUID:long,serialPersistentField:ObjectStreamField和CASE_INSENSITIVE_ORDER:比较器。

这4个额外字段来自哪里,为什么它们不在oracle文档中?当我尝试使用refection来查看字符串类所具有的字段时,我也无法访问它们(我只能看到CASE_INSENSITIVE_ORDER)。这似乎应该更好地记录下来。

1 个答案:

答案 0 :(得分:0)

在Java 8中(它在其他版本中有所不同),String具有以下字段(为方便起见而对齐):

public  static final Comparator<String>  CASE_INSENSITIVE_ORDER;
private static final ObjectStreamField[] serialPersistentFields;
private static final long                serialVersionUID;

private       int    hash;
private final char[] value;

如您所见,其中只有一个是public,其中3个是static

根据您希望显示的UML图表,您还需要找到private字段,并且可能要排除static字段。

实际上,良好的编程实践意味着您永远不会找到public,非static字段。