インタフェースClassHierarchyResolver

関数型インタフェース:
これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。

@FunctionalInterface public interface ClassHierarchyResolver
「スタック・マップの生成」および「確認」のクラス階層情報を提供します。 クラス階層リゾルバは、これらのワークロード中に検出されたすべてのクラスおよびインタフェースを処理できる必要があります。
Java Virtual Machine仕様を参照してください:
「4.10.1.2 検証タイプ・システム」
導入されたバージョン:
24
関連項目:
  • メソッドの詳細

    • defaultResolver

      static ClassHierarchyResolver defaultResolver()
      リフレクションを使用してシステム・クラス・ローダーからClassHierarchyResolver.ClassHierarchyInfoを取得するClassHierarchyResolverのデフォルト・インスタンスを返します。 このデフォルト・インスタンスは、コール元のクラス・ローダーなどの他のクラス・ローダーからクラスをロードできません。また、システム・クラスがまだロードされていない場合はロードされるため、インストゥルメンテーションには適しません。
      戻り値:
      リフレクションを使用してシステム・クラス・ローダーからClassHierarchyResolver.ClassHierarchyInfoを取得するClassHierarchyResolverのデフォルト・インスタンス
    • getClassInfo

      指定されたクラス名のClassHierarchyInfoを返します。リゾルバの名前が不明な場合は nullを返します。

      このメソッドは、クラスまたはインタフェースの階層情報を取得するためにクラス・ファイルAPIによってコールされます。ユーザーはこのメソッドをコールしないでください。 Class-File APIによって渡されるシンボリック記述子は、常にクラスまたはインタフェースを表します。

      パラメータ:
      classDesc - クラスの記述子
      戻り値:
      指定されたクラス名のClassHierarchyInfo、またはリゾルバの名前が不明な場合は null
      スロー:
      IllegalArgumentException - クラスが階層に対して問合せされない場合(アクセスできないときなど)
    • orElse

      このリゾルバが指定したクラスについて認識していない場合に、このClassHierarchyResolverを別のリゾルバと連鎖します。
      実装要件:
      デフォルトの実装では、このリゾルバがnullを戻す場合に otherリゾルバを問い合せるために実装されたリゾルバが返されます。
      パラメータ:
      other - 他のリゾルバ
      戻り値:
      連鎖リゾルバ
    • cached

      このリゾルバからクラス階層情報をキャッシュする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