Я работаю над проектом, который использует ASM-5 для чтения файлов классов и создания UML-диаграмм. Я столкнулся с проблемой при тестировании, чтобы убедиться, что мы правильно прочитали. Я тестирую это в классе String. Единственное поле, которое отображается в документации, - CASE_INSENSITIVE_ORDER. Это уже показалось мне подозрительным, но я написал свои тесты, чтобы проверить, было ли это поле и только это поле было прочитано, и появилось 5 полей: value: char [], hash: int, serialVersionUID: long, serialPersistentField: ObjectStreamField и CASE_INSENSITIVE_ORDER: Компаратор.Какие частные поля имеют java?
Откуда взялись эти 4 дополнительных поля и почему они не указаны в документации о оракуле? Я также не мог получить к ним доступ, когда пытался использовать рефлексию, чтобы посмотреть, какие поля имеет класс строк (я мог видеть только 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
См. Также: [Инкапсуляция] (https://en.wikipedia.org/wiki/Encapsulation_ (computer_programming)). – Powerlord