インタフェースClassHierarchyResolver
- 関数型インタフェース:
- これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。
@FunctionalInterface public interface ClassHierarchyResolver
「スタック・マップの生成」および「確認」のクラス階層情報を提供します。 クラス階層リゾルバは、これらのワークロード中に検出されたすべてのクラスおよびインタフェースを処理できる必要があります。
- Java Virtual Machine仕様を参照してください:
-
「4.10.1.2 検証タイプ・システム」
- 導入されたバージョン:
- 24
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス -
メソッドのサマリー
修飾子と型メソッド説明default ClassHierarchyResolvercached()このリゾルバからクラス階層情報をキャッシュするClassHierarchyResolverを返します。default ClassHierarchyResolvercached(Supplier<Map<ClassDesc, ClassHierarchyResolver.ClassHierarchyInfo>> cacheFactory) このリゾルバからクラス階層情報をキャッシュするClassHierarchyResolverを返します。static ClassHierarchyResolverリフレクションを使用してシステム・クラス・ローダーからClassHierarchyResolver.ClassHierarchyInfoを取得するClassHierarchyResolverのデフォルト・インスタンスを返します。getClassInfo(ClassDesc classDesc) 指定されたクラス名のClassHierarchyInfoを返します。リゾルバの名前が不明な場合はnullを返します。static ClassHierarchyResolverクラス階層メタデータのコレクションからクラス階層情報を抽出するClassHierarchyResolverを返します。static ClassHierarchyResolverofClassLoading(ClassLoader loader) リフレクションを含むクラス・ローダーによってロードされたクラスを介してクラス階層情報を抽出するClassHierarchyResolverを返します。static ClassHierarchyResolverofClassLoading(MethodHandles.Lookup lookup) リフレクションを含むMethodHandles.Lookupからアクセス可能なクラスを介してクラス階層情報を抽出するClassHierarchyResolverを返します。static ClassHierarchyResolverofResourceParsing(ClassLoader loader) クラス・ローダーによって配置されたclassファイルからクラス階層情報を抽出するClassHierarchyResolverを返します。static ClassHierarchyResolverofResourceParsing(Function<ClassDesc, InputStream> classStreamResolver) マッピング関数によって返されたclassファイルからクラス階層情報を抽出するClassHierarchyResolverを返します。default ClassHierarchyResolverorElse(ClassHierarchyResolver other) このリゾルバが指定したクラスについて認識していない場合に、このClassHierarchyResolverを別のリゾルバと連鎖します。
-
メソッドの詳細
-
defaultResolver
static ClassHierarchyResolver defaultResolver()リフレクションを使用してシステム・クラス・ローダーからClassHierarchyResolver.ClassHierarchyInfoを取得するClassHierarchyResolverのデフォルト・インスタンスを返します。 このデフォルト・インスタンスは、コール元のクラス・ローダーなどの他のクラス・ローダーからクラスをロードできません。また、システム・クラスがまだロードされていない場合はロードされるため、インストゥルメンテーションには適しません。- 戻り値:
- リフレクションを使用してシステム・クラス・ローダーから
ClassHierarchyResolver.ClassHierarchyInfoを取得するClassHierarchyResolverのデフォルト・インスタンス
-
getClassInfo
ClassHierarchyResolver.ClassHierarchyInfo getClassInfo(ClassDesc classDesc) 指定されたクラス名のClassHierarchyInfoを返します。リゾルバの名前が不明な場合はnullを返します。このメソッドは、クラスまたはインタフェースの階層情報を取得するためにクラス・ファイルAPIによってコールされます。ユーザーはこのメソッドをコールしないでください。 Class-File APIによって渡されるシンボリック記述子は、常にクラスまたはインタフェースを表します。
- パラメータ:
classDesc- クラスの記述子- 戻り値:
- 指定されたクラス名の
ClassHierarchyInfo、またはリゾルバの名前が不明な場合はnull - スロー:
IllegalArgumentException- クラスが階層に対して問合せされない場合(アクセスできないときなど)
-
orElse
default ClassHierarchyResolver orElse(ClassHierarchyResolver other) このリゾルバが指定したクラスについて認識していない場合に、このClassHierarchyResolverを別のリゾルバと連鎖します。- 実装要件:
- デフォルトの実装では、このリゾルバが
nullを戻す場合にotherリゾルバを問い合せるために実装されたリゾルバが返されます。 - パラメータ:
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();- 実装要件:
- デフォルトの実装では、
HashMapサプライヤをcacheFactoryとしてcached(Supplier)がコールされます。 - 戻り値:
- このリゾルバからクラス階層情報をキャッシュする
ClassHierarchyResolver
-
ofResourceParsing
static ClassHierarchyResolver ofResourceParsing(Function<ClassDesc, InputStream> classStreamResolver) マッピング関数によって返されたclassファイルからクラス階層情報を抽出するClassHierarchyResolverを返します。 マッピング関数は、クラス名にclassファイルを指定できない場合、nullを返す必要があります。 指定された入力ストリームのIOExceptionは、getClassInfo(ClassDesc)のUncheckedIOExceptionとして再スローされます。- パラメータ:
classStreamResolver- クラス記述子をclassファイル入力ストリームにマップ- 戻り値:
- マッピング関数によって返された
classファイルからクラス階層情報を抽出するClassHierarchyResolver
-
ofResourceParsing
static ClassHierarchyResolver ofResourceParsing(ClassLoader loader) クラス・ローダーによって配置されたclassファイルからクラス階層情報を抽出するClassHierarchyResolverを返します。- パラメータ:
loader- クラス・ローダー、クラス・ファイルの検索- 戻り値:
- クラス・ローダーによって配置された
classファイルからクラス階層情報を抽出するClassHierarchyResolver
-
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) リフレクションを含むMethodHandles.Lookupからアクセス可能なクラスを介してクラス階層情報を抽出するClassHierarchyResolverを返します。 解決されたクラスが指定されたルックアップにアクセスできない場合、getClassInfo(ClassDesc)はnullを返すかわりにIllegalArgumentExceptionをスローします。- パラメータ:
lookup- ルックアップ、解決するクラスにアクセスできる必要があります。- 戻り値:
- リフレクションを使用して
MethodHandles.Lookupからアクセス可能なクラスを介してクラス階層情報を抽出するClassHierarchyResolver
-