Spec-Zone.ru › OpenJDK 25

Интерфейс ClassHierarchyResolver

Функциональный интерфейс:
Это функциональный интерфейс, поэтому его можно использовать в качестве целевого типа для лямбда-выражения или ссылки на метод.
@FunctionalInterface public interface ClassHierarchyResolver
Предоставляет информацию об иерархии классов для генерации карт стека и проверки. Средство разрешения иерархии классов должно уметь обрабатывать все классы и интерфейсы, встречающиеся при выполнении этих задач.
См. Спецификацию виртуальной машины Java:
4.10.1.2 Система типов проверки
С версии:
24
См. также:
  • ClassFile.ClassHierarchyResolverOption
  • StackMapTableAttribute

Краткое описание вложенных классов

Модификатор и тип Интерфейс Описание
static interface  ClassHierarchyResolver.ClassHierarchyInfo
Информация о разрешённом классе.

Краткое описание методов

Модификатор и тип Метод Описание
default ClassHierarchyResolver cached()
Возвращает ClassHierarchyResolver, кэшируемый информацию об иерархии классов из этого средства разрешения.
default ClassHierarchyResolver cached(Supplier<Map<ClassDesc, ClassHierarchyResolver.ClassHierarchyInfo>> cacheFactory)
Возвращает ClassHierarchyResolver, кэшируемый информацию об иерархии классов из этого средства разрешения.
static ClassHierarchyResolver defaultResolver()
Возвращает экземпляр ClassHierarchyResolver по умолчанию, который получает ClassHierarchyResolver.ClassHierarchyInfo из системного загрузчика классов с помощью рефлексии.
ClassHierarchyResolver.ClassHierarchyInfo getClassInfo(ClassDesc classDesc)
Возвращает ClassHierarchyInfo для заданного имени класса или null, если это имя неизвестно средству разрешения.
static ClassHierarchyResolver of(Collection<ClassDesc> interfaces, Map<ClassDesc, ClassDesc> classToSuperClass)
Возвращает ClassHierarchyResolver, извлекающий сведения об иерархии классов из коллекций метаданных иерархии классов.
static ClassHierarchyResolver ofClassLoading(ClassLoader loader)
Возвращает ClassHierarchyResolver, извлекающий сведения об иерархии классов с помощью рефлексии через классы, загруженные загрузчиком классов.
static ClassHierarchyResolver ofClassLoading(MethodHandles.Lookup lookup)
Возвращает ClassHierarchyResolver, извлекающий сведения об иерархии классов с помощью рефлексии через классы, доступные для MethodHandles.Lookup.
static ClassHierarchyResolver ofResourceParsing(ClassLoader loader)
Возвращает ClassHierarchyResolver, извлекающий сведения об иерархии классов из файлов class, найденных загрузчиком классов.
static ClassHierarchyResolver ofResourceParsing(Function<ClassDesc, InputStream> classStreamResolver)
Возвращает ClassHierarchyResolver, извлекающий сведения об иерархии классов из файлов class, возвращаемых функцией отображения.
default ClassHierarchyResolver orElse(ClassHierarchyResolver other)
Связывает это средство разрешения ClassHierarchyResolver с другим, к которому будет выполнено обращение, если этому средству разрешения неизвестен указанный класс.

Подробное описание методов

defaultResolver

static ClassHierarchyResolver defaultResolver()
Возвращает экземпляр ClassHierarchyResolver по умолчанию, который получает ClassHierarchyResolver.ClassHierarchyInfo из системного загрузчика классов с помощью рефлексии. Этот экземпляр по умолчанию не может загружать классы из других загрузчиков классов, например из загрузчика классов вызывающего кода; он также загружает системные классы, если они ещё не загружены, поэтому не подходит для инструментирования.
Возвращает:
экземпляр ClassHierarchyResolver по умолчанию, который получает ClassHierarchyResolver.ClassHierarchyInfo из системного загрузчика классов с помощью рефлексии

getClassInfo

ClassHierarchyResolver.ClassHierarchyInfo getClassInfo(ClassDesc classDesc)
Возвращает ClassHierarchyInfo для заданного имени класса или null, если это имя неизвестно средству разрешения.

Этот метод вызывается API Class-File для получения сведений об иерархии класса или интерфейса; пользователям не следует вызывать этот метод. Символьный дескриптор, передаваемый API Class-File, всегда представляет класс или интерфейс.

Параметры:
classDesc — дескриптор класса
Возвращает:
ClassHierarchyInfo для заданного имени класса или null, если это имя неизвестно средству разрешения
Вызывает исключение:
IllegalArgumentException — если иерархию класса не следует запрашивать, например когда класс недоступен

orElse

default ClassHierarchyResolver orElse(ClassHierarchyResolver other)
Связывает это средство разрешения ClassHierarchyResolver с другим, к которому будет выполнено обращение, если этому средству разрешения неизвестен указанный класс.
Требования к реализации:
Реализация по умолчанию возвращает средство разрешения, которое обращается к средству разрешения other, если это средство разрешения возвращает null.
Параметры:
other — другое средство разрешения
Возвращает:
связанное средство разрешения

cached

default ClassHierarchyResolver cached(Supplier<Map<ClassDesc, ClassHierarchyResolver.ClassHierarchyInfo>> cacheFactory)
Возвращает ClassHierarchyResolver, кэшируемый информацию об иерархии классов из этого средства разрешения. Возвращённое средство разрешения не будет обновляться, если результаты запросов этого средства разрешения со временем изменятся. Потокобезопасность возвращённого средства разрешения зависит от потокобезопасности карты, возвращаемой cacheFactory.
Требования к реализации:
Реализация по умолчанию возвращает средство разрешения, содержащее экземпляр карты кэша, предоставленной cacheFactory. Оно выполняет поиск в карте кэша либо, если имя класса ещё не запрашивалось, обращается к этому средству разрешения и кэширует результат, включая null, указывающий на неизвестные имена классов. Карта кэша может не принимать ключи и значения null.
Параметры:
cacheFactory — фабрика кэша
Возвращает:
ClassHierarchyResolver, кэшируемый информацию об иерархии классов из этого средства разрешения

cached

default ClassHierarchyResolver cached()
Возвращает ClassHierarchyResolver, кэшируемый информацию об иерархии классов из этого средства разрешения. Возвращённое средство разрешения не будет обновляться, если результаты запросов этого средства разрешения со временем изменятся. Возвращённое средство разрешения не является потокобезопасным.
MethodHandles.Lookup lookup = ...;
ClassHierarchyResolver resolver = ClassHierarchyResolver.ofClassLoading(lookup).cached();
Требования к реализации:
Реализация по умолчанию вызывает cached(Supplier), передавая поставщик HashMap в качестве cacheFactory.
Возвращает:
ClassHierarchyResolver, кэшируемый информацию об иерархии классов из этого средства разрешения

ofResourceParsing

static ClassHierarchyResolver ofResourceParsing(Function<ClassDesc, InputStream> classStreamResolver)
Возвращает ClassHierarchyResolver, извлекающий сведения об иерархии классов из файлов class, возвращаемых функцией отображения. Функция отображения должна возвращать null, если она не может предоставить файл class для имени класса. Любой IOException из предоставленного входного потока повторно выбрасывается как UncheckedIOException в методе getClassInfo(ClassDesc).
Параметры:
classStreamResolver — сопоставляет дескрипторы классов с входными потоками файлов class
Возвращает:
ClassHierarchyResolver, извлекающий сведения об иерархии классов из файлов class, возвращаемых функцией отображения

ofResourceParsing

static ClassHierarchyResolver ofResourceParsing(ClassLoader loader)
Возвращает ClassHierarchyResolver, извлекающий сведения об иерархии классов из файлов class, найденных загрузчиком классов.
Параметры:
loader — загрузчик классов, используемый для поиска файлов классов
Возвращает:
ClassHierarchyResolver, извлекающий сведения об иерархии классов из файлов class, найденных загрузчиком классов

of

static ClassHierarchyResolver of(Collection<ClassDesc> interfaces, Map<ClassDesc, ClassDesc> classToSuperClass)
Возвращает ClassHierarchyResolver, извлекающий сведения об иерархии классов из коллекций метаданных иерархии классов.
Параметры:
interfaces — коллекция классов, заведомо являющихся интерфейсами
classToSuperClass — отображение классов в их суперклассы
Возвращает:
ClassHierarchyResolver, извлекающий сведения об иерархии классов из коллекций метаданных иерархии классов

ofClassLoading

static ClassHierarchyResolver ofClassLoading(ClassLoader loader)
Возвращает ClassHierarchyResolver, извлекающий сведения об иерархии классов с помощью рефлексии через классы, загруженные загрузчиком классов.
Параметры:
loader — загрузчик классов
Возвращает:
ClassHierarchyResolver, извлекающий сведения об иерархии классов с помощью рефлексии через классы, загруженные загрузчиком классов

ofClassLoading

static ClassHierarchyResolver ofClassLoading(MethodHandles.Lookup lookup)
Возвращает ClassHierarchyResolver, извлекающий сведения об иерархии классов с помощью рефлексии через классы, доступные для MethodHandles.Lookup. Если разрешённый класс недоступен для заданного объекта поиска, метод getClassInfo(ClassDesc) выбрасывает IllegalArgumentException вместо возврата null.
Параметры:
lookup — объект поиска, который должен иметь доступ к разрешаемым классам
Возвращает:
ClassHierarchyResolver, извлекающий сведения об иерархии классов с помощью рефлексии через классы, доступные для MethodHandles.Lookup

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая общие сведения, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/classfile/ClassHierarchyResolver.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API