クラスjava.lang.invoke.MethodHandles.Lookup
の使用
MethodHandles.Lookupを使用するパッケージ
パッケージ
説明
Javaプログラミング言語の設計にあたり基本的なクラスを提供します。
クラスやメソッド・ハンドルなどのランタイム・エンティティ用に「名目記述子」を表すクラスおよびインタフェース、および定数プール・エントリや
invokedynamic
コール・サイトなどのクラス・ファイル・エンティティ用に「名目記述子」を表すクラスおよびインタフェース。java.lang.invoke
パッケージは、Java Virtual Machineとやりとりするための低レベルのプリミティブを提供します。java.lang.runtime
パッケージでは、Java言語の低レベルのランタイム・サポートが提供されます。invokedynamic
コール・サイトをリンクするためのインタフェースとクラスが含まれています。
独自の言語固有のオブジェクト・モデルと型変換を実装するために、言語ランタイムに必要なインタフェースとクラスが含まれています。
言語ランタイムが、言語固有のオブジェクト・モデルを実装し、いくつかのクラスの基本的な実装とさまざまなユーティリティを提供することによってコンバージョンをより便利にするクラスが含まれています。
-
java.langでのMethodHandles.Lookupの使用
型MethodHandles.Lookupのパラメータを持つjava.langのメソッド修飾子と型メソッド説明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.constantでのMethodHandles.Lookupの使用
型MethodHandles.Lookupのパラメータを持つjava.lang.constantのメソッド修飾子と型メソッド説明DynamicCallSiteDesc.resolveCallSiteDesc(MethodHandles.Lookup lookup)
指定された引数を使用してブートストラップ・メソッドを最終的に起動し、結果のCallSite
を返します。ConstantDesc.resolveConstantDesc(MethodHandles.Lookup lookup)
JVMS 5.4.3の解決動作およびJVMS 5.4.4のアクセス制御動作を反映して、この記述子を解決します。DynamicConstantDesc.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()
最小の信頼レベルを持つルックアップ・オブジェクト
を返します。型MethodHandles.Lookupのパラメータを持つjava.lang.invokeのメソッド修飾子と型メソッド説明static CallSite
LambdaMetafactory.altMetafactory(MethodHandles.Lookup caller, String invokedName, MethodType invokedType, 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 invokedName, MethodType invokedType, MethodType samMethodType, MethodHandle implMethod, MethodType instantiatedMethodType)
適切な型適応および引数の部分評価の後、指定された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の使用
型MethodHandles.Lookupのパラメータを持つjava.lang.runtimeのメソッド修飾子と型メソッド説明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()
メソッドを生成するブートストラップ・メソッド。 -
jdk.dynalinkでのMethodHandles.Lookupの使用
MethodHandles.Lookupを返すjdk.dynalinkのメソッド修飾子と型メソッド説明SecureLookupSupplier.getLookup()
このSecureLookupSupplier
で保護されている参照を返します。protected MethodHandles.Lookup
SecureLookupSupplier.getLookupPrivileged()
セキュリティ・チェックなしでSecureLookupSupplier.getLookup()
の値を返します。型MethodHandles.Lookupのパラメータを持つjdk.dynalinkのコンストラクタ修飾子コンストラクタ説明CallSiteDescriptor(MethodHandles.Lookup lookup, Operation operation, MethodType methodType)
新しいコール・サイト記述子を作成します。SecureLookupSupplier(MethodHandles.Lookup lookup)
渡されたルックアップを確保して、新しいセキュア・ルック・アップ・サプライヤを作成します。 -
jdk.dynalink.linkerでのMethodHandles.Lookupの使用
型MethodHandles.Lookupの型引数を持つjdk.dynalink.linkerのメソッド・パラメータ修飾子と型メソッド説明GuardingTypeConverterFactory.convertToType(Class<?> sourceType, Class<?> targetType, Supplier<MethodHandles.Lookup> lookupSupplier)
指定されたソース型の値を受け取り、指定されたターゲット型に変換された値を返す保護された型変換を返します。 -
jdk.dynalink.linker.supportでのMethodHandles.Lookupの使用
型MethodHandles.Lookupのパラメータを持つjdk.dynalink.linker.supportのメソッド修飾子と型メソッド説明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)
型MethodHandles.Lookupのパラメータを持つjdk.dynalink.linker.supportのコンストラクタ修飾子コンストラクタ説明Lookup(MethodHandles.Lookup lookup)
MethodHandles.Lookup
のインスタンスにバインドされた新しいインスタンスを作成します。