インタフェースClassHierarchyResolver
- 関数型インタフェース:
- これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。
@FunctionalInterface public interface ClassHierarchyResolver
「スタック・マップの生成」および「確認」のクラス階層情報を提供します。 クラス階層リゾルバは、これらのワークロード中に検出されたすべてのクラスおよびインタフェースを処理できる必要があります。
- Java Virtual Machine仕様を参照してください:
-
「4.10.1.2 検証タイプ・システム」
- 導入されたバージョン:
- 24
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス -
メソッドのサマリー
修飾子と型メソッド説明default ClassHierarchyResolver
cached()
このリゾルバからクラス階層情報をキャッシュするClassHierarchyResolver
を返します。default ClassHierarchyResolver
cached
(Supplier<Map<ClassDesc, ClassHierarchyResolver.ClassHierarchyInfo>> cacheFactory) このリゾルバからクラス階層情報をキャッシュするClassHierarchyResolver
を返します。static ClassHierarchyResolver
リフレクションを使用してシステム・クラス・ローダーからClassHierarchyResolver.ClassHierarchyInfo
を取得するClassHierarchyResolver
のデフォルト・インスタンスを返します。getClassInfo
(ClassDesc classDesc) 指定されたクラス名のClassHierarchyInfo
を返します。リゾルバの名前が不明な場合はnull
を返します。static ClassHierarchyResolver
クラス階層メタデータのコレクションからクラス階層情報を抽出するClassHierarchyResolver
を返します。static ClassHierarchyResolver
ofClassLoading
(ClassLoader loader) リフレクションを含むクラス・ローダーによってロードされたクラスを介してクラス階層情報を抽出するClassHierarchyResolver
を返します。static ClassHierarchyResolver
ofClassLoading
(MethodHandles.Lookup lookup) リフレクションを含むMethodHandles.Lookup
からアクセス可能なクラスを介してクラス階層情報を抽出するClassHierarchyResolver
を返します。static ClassHierarchyResolver
ofResourceParsing
(ClassLoader loader) クラス・ローダーによって配置されたclass
ファイルからクラス階層情報を抽出するClassHierarchyResolver
を返します。static ClassHierarchyResolver
ofResourceParsing
(Function<ClassDesc, InputStream> classStreamResolver) マッピング関数によって返されたclass
ファイルからクラス階層情報を抽出するClassHierarchyResolver
を返します。default ClassHierarchyResolver
orElse
(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
-