使用反射时检索的其他字段

时间:2016-03-03 04:25:24

标签: methods reflection

我正在编写一个简单的java类,它使用反射API来查找java.lang.class中声明的字段。以下是我编写的java代码。

Field[] fields = String.class.getDeclaredFields();

for (Field f : fields) {
    System.out.println("Field name: " + f.getName());
}

运行此程序时,我得到以下输出。

Field name: serialVersionUID
Field name: CASE_INSENSITIVE_ORDER
Field name: ascii
Field name: stringArray
Field name: stringArraySize
Field name: enableCopy
Field name: value
Field name: offset
Field name: count
Field name: hashCode
Field name: hashCode32
Field name: seed
Field name: startCombiningAbove
Field name: endCombiningAbove
Field name: upperValues
Field name: serialPersistentFields

当我查看String类的源代码时,我发现在API中只为该类定义了6个字段。

我无法确定输出中这些附加字段的来源。请在这里帮忙。

1 个答案:

答案 0 :(得分:0)

您的代码没有任何问题;当我运行它时,我得到了预期的输出:

Field name: value
Field name: hash
Field name: serialVersionUID
Field name: serialPersistentFields
Field name: CASE_INSENSITIVE_ORDER

我猜你正在使用一个非Oracle Java虚拟机添加(在其捆绑的库中或通过一些运行时魔术)向String类添加一些非标准字段。

相关问题