クラスjava.lang.invoke.MethodHandles.Lookup
の使用
パッケージ
説明
Javaプログラミング言語の設計にあたり基本的なクラスを提供します。
クラス・ファイルの解析、生成および変換ライブラリを提供します。
クラスやメソッド・ハンドルなどのランタイム・エンティティ用に「名目記述子」を表すクラスおよびインタフェース、および定数プール・エントリや
invokedynamic
コール・サイトなどのクラス・ファイル・エンティティ用に「名目記述子」を表すクラスおよびインタフェース。java.lang.invoke
パッケージは、Java Virtual Machineとやりとりするための低レベルのプリミティブを提供します。java.lang.runtime
パッケージでは、Java言語の低レベルのランタイム・サポートが提供されます。invokedynamic
コール・サイトのリンクに使用されるインタフェースおよびクラスが含まれます。
独自の言語固有のオブジェクト・モデルおよび型変換を実装するために言語ランタイムに必要なインタフェースおよびクラスが含まれます。
言語ランタイムが独自の言語固有のオブジェクト・モデルおよび型変換を実装しやすくするために、一部のクラスの基本的な実装と様々なユーティリティを提供することで、より便利なクラスが含まれています。
-
java.langでのMethodHandles.Lookupの使用
修飾子と型メソッド説明Double.resolveConstantDesc
(MethodHandles.Lookup lookup) このインスタンスをConstantDesc
として解決します。その結果がインスタンス自体です。Float.resolveConstantDesc
(MethodHandles.Lookup lookup) このインスタンスをConstantDesc
として解決します。その結果がインスタンス自体です。Integer.resolveConstantDesc
(MethodHandles.Lookup lookup) このインスタンスをConstantDesc
として解決します。その結果がインスタンス自体です。Long.resolveConstantDesc
(MethodHandles.Lookup lookup) このインスタンスをConstantDesc
として解決します。その結果がインスタンス自体です。String.resolveConstantDesc
(MethodHandles.Lookup lookup) このインスタンスをConstantDesc
として解決します。その結果がインスタンス自体です。 -
java.lang.classfilePREVIEWでのMethodHandles.Lookupの使用
修飾子と型メソッド説明ClassHierarchyResolver.ofClassLoading
(MethodHandles.Lookup lookup) Lookupを使用してReflection APIを介してクラス階層情報を抽出するClassHierarchyResolverを返します。 -
java.lang.constantでのMethodHandles.Lookupの使用
修飾子と型メソッド説明DynamicCallSiteDesc.resolveCallSiteDesc
(MethodHandles.Lookup lookup) 指定された引数を使用してブートストラップ・メソッドを最終的に起動し、結果のCallSite
を返します。Class
<?> ClassDesc.resolveConstantDesc
(MethodHandles.Lookup lookup) ConstantDesc.resolveConstantDesc
(MethodHandles.Lookup lookup) DynamicConstantDesc.resolveConstantDesc
(MethodHandles.Lookup lookup) MethodHandleDesc.resolveConstantDesc
(MethodHandles.Lookup lookup) MethodTypeDesc.resolveConstantDesc
(MethodHandles.Lookup lookup) -
java.lang.invokeでのMethodHandles.Lookupの使用
修飾子と型メソッド説明MethodHandles.Lookup.defineHiddenClass
(byte[] bytes, boolean initialize, MethodHandles.Lookup.ClassOption... options) bytes
からhiddenクラスまたはインタフェースを作成し、新しく作成されたクラスまたはインタフェースにLookup
を返します。MethodHandles.Lookup.defineHiddenClassWithClassData
(byte[] bytes, Object classData, boolean initialize, MethodHandles.Lookup.ClassOption... options) 関連付けられた「クラス・データ」を使用してbytes
からhiddenクラスまたはインタフェースを作成し、新しく作成されたクラスまたはインタフェースでLookup
を返します。MethodHandles.Lookup.dropLookupMode
(int modeToDrop) このルックアップ・オブジェクトがメンバーを検索する同じルックアップ・クラスに、指定されたルックアップ・モードを失ったルックアップ・モードを使用してルックアップを作成します。指定された新しいルックアップ・クラスでルックアップを作成します。static MethodHandles.Lookup
MethodHandles.lookup()
呼出し元のすべてのサポートされるバイトコード動作をエミュレートするためのフル機能を持つルックアップ・オブジェクト
を返します。static MethodHandles.Lookup
MethodHandles.privateLookupIn
(Class<?> targetClass, MethodHandles.Lookup caller) 「プライベート・アクセス」を含む、サポートされているすべてのバイトコード動作をエミュレートするために、ターゲット・クラスのlookup
オブジェクトを返します。static MethodHandles.Lookup
MethodHandles.publicLookup()
最小の信頼レベルを持つルックアップ・オブジェクト
を返します。修飾子と型メソッド説明static CallSite
LambdaMetafactory.altMetafactory
(MethodHandles.Lookup caller, String interfaceMethodName, MethodType factoryType, Object... args) 適切な型適応および引数の部分評価の後、指定されたMethodHandle
への委譲により、1つ以上のインタフェースを実装する単純な関数オブジェクトの作成を容易にします。static VarHandle
ConstantBootstraps.arrayVarHandle
(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> arrayClass) 配列型にVarHandle
を検索します。static <T> T
MethodHandles.classData
(MethodHandles.Lookup caller, String name, Class<T> type) 指定されたcaller
ルックアップ・オブジェクトまたはnull
のルックアップ・クラスに関連付けられた「クラス・データ」を返します。static <T> T
MethodHandles.classDataAt
(MethodHandles.Lookup caller, String name, Class<T> type, int index) 指定されたcaller
ルックアップ・オブジェクトのルックアップ・クラスに関連付けられているクラス・データがList
の場合、「クラス・データ」の指定された索引にある要素を返します。static <E extends Enum<E>>
EConstantBootstraps.enumConstant
(MethodHandles.Lookup lookup, String name, Class<E> type) name
によって指定された名前を持つtype
によって指定された型のenum
定数を返します。static Object
ConstantBootstraps.explicitCast
(MethodHandles.Lookup lookup, String name, Class<?> dstType, Object value) ソース・タイプから宛先タイプへの変換を適用します。static VarHandle
ConstantBootstraps.fieldVarHandle
(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType) インスタンス・フィールドのVarHandle
を検索します。static Object
ConstantBootstraps.getStaticFinal
(MethodHandles.Lookup lookup, String name, Class<?> type) クラスで宣言された静的な最終フィールドの値を返します。この値は、(または、プリミティブ値フィールドの場合はラッパー・クラスで宣言されます。)フィールド・タイプと同じですstatic Object
ConstantBootstraps.getStaticFinal
(MethodHandles.Lookup lookup, String name, Class<?> type, Class<?> declaringClass) 静的最終フィールドの値を返します。static Object
ConstantBootstraps.invoke
(MethodHandles.Lookup lookup, String name, Class<?> type, MethodHandle handle, Object... args) 指定された引数を使ってメソッド・ハンドルを呼び出した結果を返します。static CallSite
StringConcatFactory.makeConcat
(MethodHandles.Lookup lookup, String name, MethodType concatType) 最適化された文字列連結メソッドの作成を容易にします。このメソッドを使用すると、既知の型の引数(型の適応後や引数の部分評価後など)を効率的に連結できます。static CallSite
StringConcatFactory.makeConcatWithConstants
(MethodHandles.Lookup lookup, String name, MethodType concatType, String recipe, Object... constants) 最適化された文字列連結メソッドの作成を容易にします。このメソッドを使用すると、既知の型の引数(型の適応後や引数の部分評価後など)を効率的に連結できます。static CallSite
LambdaMetafactory.metafactory
(MethodHandles.Lookup caller, String interfaceMethodName, MethodType factoryType, MethodType interfaceMethodType, MethodHandle implementation, MethodType dynamicMethodType) 適切な型適応および引数の部分評価の後、指定されたMethodHandle
への委譲により、1つ以上のインタフェースを実装する単純な関数オブジェクトの作成を容易にします。static Object
ConstantBootstraps.nullConstant
(MethodHandles.Lookup lookup, String name, Class<?> type) type
で指定された参照型のnull
オブジェクト参照を戻します。static Class
<?> ConstantBootstraps.primitiveClass
(MethodHandles.Lookup lookup, String name, Class<?> type) name
によって型記述子が指定されているプリミティブ型のClass
ミラーを戻します。static MethodHandles.Lookup
MethodHandles.privateLookupIn
(Class<?> targetClass, MethodHandles.Lookup caller) 「プライベート・アクセス」を含む、サポートされているすべてのバイトコード動作をエミュレートするために、ターゲット・クラスのlookup
オブジェクトを返します。<T extends Member>
TMethodHandleInfo.reflectAs
(Class<T> expected, MethodHandles.Lookup lookup) メソッド、コンストラクタまたはフィールド・オブジクトの基礎となるメンバーをリフレクトします。static VarHandle
ConstantBootstraps.staticFieldVarHandle
(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType) 静的フィールドのVarHandle
を検索します。 -
java.lang.runtimeでのMethodHandles.Lookupの使用
修飾子と型メソッド説明static Object
ObjectMethods.bootstrap
(MethodHandles.Lookup lookup, String methodName, TypeDescriptor type, Class<?> recordClass, String names, MethodHandle... getters) invokedynamic
コール・サイトまたは動的な定数プール・エントリのコンポーネント名およびアクセッサ・メソッドの説明に基づいて、Object.equals(Object)
、Object.hashCode()
およびObject.toString()
メソッドを生成するブートストラップ・メソッド。static CallSite
SwitchBootstraps.enumSwitch
(MethodHandles.Lookup lookup, String invocationName, MethodType invocationType, Object... labels) 列挙型のターゲットにswitch
を実装するinvokedynamic
コール・サイトをリンクするためのブートストラップ・メソッド。static CallSite
TemplateRuntime.newLargeStringTemplate
(MethodHandles.Lookup lookup, String name, MethodType type) 大きな文字列テンプレートを作成するための文字列テンプレート・ブートストラップ・メソッド(つまり、値スロット数がStringConcatFactory.MAX_INDY_CONCAT_ARG_SLOTS
PREVIEWを超える場合)。static CallSite
TemplateRuntime.newStringTemplate
(MethodHandles.Lookup lookup, String name, MethodType type, String... fragments) 文字列テンプレートを作成するための文字列テンプレート・ブートストラップ・メソッド。static CallSite
TemplateRuntime.processStringTemplate
(MethodHandles.Lookup lookup, String name, MethodType type, MethodHandle processorGetter, String... fragments) 静的最終プロセッサの文字列テンプレート・ブートストラップ・メソッド。static CallSite
SwitchBootstraps.typeSwitch
(MethodHandles.Lookup lookup, String invocationName, MethodType invocationType, Object... labels) 参照タイプのターゲットにswitch
を実装するinvokedynamic
コール・サイトをリンクするためのブートストラップ・メソッド。 -
jdk.dynalinkでのMethodHandles.Lookupの使用
修飾子と型メソッド説明final MethodHandles.Lookup
SecureLookupSupplier.getLookup()
このSecureLookupSupplier
で保護されている参照を返します。protected final MethodHandles.Lookup
SecureLookupSupplier.getLookupPrivileged()
セキュリティ・チェックなしでSecureLookupSupplier.getLookup()
の値を返します。修飾子コンストラクタ説明CallSiteDescriptor
(MethodHandles.Lookup lookup, Operation operation, MethodType methodType) 新しいコール・サイト記述子を作成します。渡されたルックアップを保護して、新しいセキュアなルックアップ・サプライヤを作成します。 -
jdk.dynalink.linkerでのMethodHandles.Lookupの使用
修飾子と型メソッド説明GuardingTypeConverterFactory.convertToType
(Class<?> sourceType, Class<?> targetType, Supplier<MethodHandles.Lookup> lookupSupplier) 指定されたソース・タイプの値を受け取り、指定されたターゲット・タイプに変換された値を戻すガード付き型変換を返します。 -
jdk.dynalink.linker.supportでのMethodHandles.Lookupの使用
修飾子と型メソッド説明static MethodHandle
Lookup.findOwnSpecial
(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes) ルックアップを指定すると、Lookup.findSpecial(Class, String, MethodType)
を使用して、そのルックアップのクラスに対するメソッドを検索します。static MethodHandle
Lookup.findOwnStatic
(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes) ルックアップを指定すると、Lookup.findStatic(Class, String, MethodType)
を使用して、そのルックアップのクラスに対するメソッドを検索します。static MethodHandle
Lookup.unreflect
(MethodHandles.Lookup lookup, Method m) unreflect(Method)
を実行し、発生したIllegalAccessException
をIllegalAccessError
に変換します。static MethodHandle
Lookup.unreflectConstructor
(MethodHandles.Lookup lookup, Constructor<?> c) 修飾子コンストラクタ説明Lookup
(MethodHandles.Lookup lookup) MethodHandles.Lookup
のインスタンスにバインドされた新しいインスタンスを作成します。