Spec-Zone.ru › OpenJDK 24

Интерфейс ClassHierarchyResolver

Функциональный интерфейс:
Это функциональный интерфейс и поэтому может быть использован в качестве целевого назначения для лямбда-выражения или ссылки на метод.
@FunctionalInterface public interface ClassHierarchyResolver
Предоставляет информацию о иерархии классов для генерации карт стека и верификации. Резольвер иерархии классов должен уметь обрабатывать все классы и интерфейсы, встречающиеся во время этих задач.
См. Спецификацию Java Virtual Machine:
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 файлов классов для получения информации о иерархии класса или интерфейса; пользователи не должны вызывать этот метод. Символьный дескриптор, переданный API файлов классов, всегда представляет класс или интерфейс.

Параметры:
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 с помощью рефлексии

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/classfile/ClassHierarchyResolver.html

Spec-Zone.ru

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