クラスjava.lang.invoke.MethodType
の使用
パッケージ | 説明 |
---|---|
java.lang |
Javaプログラミング言語の設計にあたり基本的なクラスを提供します。
|
java.lang.invoke |
java.lang.invoke パッケージは、Java Virtual Machineとやりとりするための低レベルのプリミティブを提供します。 |
jdk.dynalink |
invokedynamic コール・サイトをリンクするためのインタフェースとクラスが含まれています。 |
jdk.dynalink.linker |
独自の言語固有のオブジェクト・モデルと型変換を実装するために、言語ランタイムに必要なインタフェースとクラスが含まれています。
|
jdk.dynalink.linker.support |
言語ランタイムが、言語固有のオブジェクト・モデルを実装し、いくつかのクラスの基本的な実装とさまざまなユーティリティを提供することによってコンバージョンをより便利にするクラスが含まれています。
|
-
java.langでのMethodTypeの使用
MethodTypeを返すjava.langのメソッド 修飾子と型 メソッド 説明 default MethodType
StackWalker.StackFrame. getMethodType()
このスタック・フレームによって表されるメソッドのパラメータ型と戻り値の型を表すMethodType
を返します。 -
java.lang.invokeでのMethodTypeの使用
MethodTypeを返すjava.lang.invokeのメソッド 修飾子と型 メソッド 説明 MethodType
VarHandle. accessModeType(VarHandle.AccessMode accessMode)
このVarHandleのアクセス・モードの型とアクセス・モードを取得します。MethodType
MethodType. appendParameterTypes(Class<?>... ptypesToInsert)
追加のパラメータの型を持つメソッド型を検索または作成します。MethodType
MethodType. appendParameterTypes(List<Class<?>> ptypesToInsert)
追加のパラメータの型を持つメソッド型を検索または作成します。MethodType
MethodType. changeParameterType(int num, Class<?> nptype)
1つのパラメータの型が異なるメソッド型を検索または作成します。MethodType
MethodType. changeReturnType(Class<?> nrtype)
戻り値の型が異なるメソッド型を検索または作成します。MethodType
MethodType. dropParameterTypes(int start, int end)
いくつかのパラメータの型が削除されたメソッド型を検索または作成します。MethodType
MethodType. erase()
すべての参照型を消去してObject
にします。static MethodType
MethodType. fromMethodDescriptorString(String descriptor, ClassLoader loader)
バイト・コード記述子のスペリングに基づいてメソッド型のインスタンスを検索または作成します。MethodType
MethodType. generic()
すべての型(参照とプリミティブの両方)をObject
に変換します。static MethodType
MethodType. genericMethodType(int objectArgCount)
コンポーネントがすべてObject
であるようなメソッド型を検索または作成します。static MethodType
MethodType. genericMethodType(int objectArgCount, boolean finalArray)
Object
とオプションで末尾のObject[]
配列をコンポーネントに持つメソッド型を検索または作成します。MethodType
MethodHandleInfo. getMethodType()
解決されたシンボリック参照の公称型をメソッド型として表現して返します。MethodType
MethodType. insertParameterTypes(int num, Class<?>... ptypesToInsert)
追加のパラメータの型を持つメソッド型を検索または作成します。MethodType
MethodType. insertParameterTypes(int num, List<Class<?>> ptypesToInsert)
追加のパラメータの型を持つメソッド型を検索または作成します。static MethodType
MethodType. methodType(Class<?> rtype)
指定されたコンポーネントを持つメソッド型を検索または作成します。static MethodType
MethodType. methodType(Class<?> rtype, Class<?> ptype0)
指定されたコンポーネントを持つメソッド型を検索または作成します。static MethodType
MethodType. methodType(Class<?> rtype, Class<?>[] ptypes)
指定されたメソッド型のインスタンスを検索または作成します。static MethodType
MethodType. methodType(Class<?> rtype, Class<?> ptype0, Class<?>... ptypes)
指定されたコンポーネントを持つメソッド型を検索または作成します。static MethodType
MethodType. methodType(Class<?> rtype, MethodType ptypes)
指定されたコンポーネントを持つメソッド型を検索または作成します。static MethodType
MethodType. methodType(Class<?> rtype, List<Class<?>> ptypes)
指定されたコンポーネントを持つメソッド型を検索または作成します。MethodType
CallSite. type()
このコール・サイトのターゲットの型を返します。MethodType
MethodHandle. type()
このメソッド・ハンドルの型を報告します。MethodType
MethodType. unwrap()
すべてのラッパー型を対応するプリミティブ型に変換します。MethodType
MethodType. wrap()
すべてのプリミティブ型を対応するラッパー型に変換します。型MethodTypeのパラメータを持つjava.lang.invokeのメソッド 修飾子と型 メソッド 説明 static CallSite
LambdaMetafactory. altMetafactory(MethodHandles.Lookup caller, String invokedName, MethodType invokedType, Object... args)
適切な型適応および引数の部分評価の後、指定されたMethodHandle
への委譲により、1つ以上のインタフェースを実装する単純な関数オブジェクトの作成を容易にします。MethodHandle
MethodHandle. asType(MethodType newType)
現在のメソッド・ハンドルの型を新しい型に適応させるアダプタ・メソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. bind(Object receiver, String name, MethodType type)
非staticメソッドの早期バインド・メソッド・ハンドルを生成します。static MethodHandle
MethodHandles. empty(MethodType type)
任意の引数を無視し、何もせず、戻り値の型に応じて適切な既定値を返す、リクエストされた型のメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. exactInvoker(MethodType type)
特殊なインボーカ・メソッド・ハンドルを生成します(これを使用すれば、指定された型の任意のメソッド・ハンドルを、invokeExact
を使用する場合と同様に呼び出すことができる)。static MethodHandle
MethodHandles. explicitCastArguments(MethodHandle target, MethodType newType)
指定されたメソッド・ハンドルの型を新しい型に適応させるために、引数と戻り値の型の変換をペア単位で行うメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. findConstructor(Class<?> refc, MethodType type)
指定された型のコンストラクタを使ってオブジェクトの作成と初期化を行うメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. findSpecial(Class<?> refc, String name, MethodType type, Class<?> specialCaller)
仮想メソッドの早期にバインドされるメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. findStatic(Class<?> refc, String name, MethodType type)
staticメソッドのメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. findVirtual(Class<?> refc, String name, MethodType type)
仮想メソッドのメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. invoker(MethodType type)
特殊なインボーカ・メソッド・ハンドルを生成します(これを使用すれば、指定された型と互換性のある任意のメソッド・ハンドルを、invoke
を使用する場合と同様に呼び出すことができる)。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 MethodType
MethodType. methodType(Class<?> rtype, MethodType ptypes)
指定されたコンポーネントを持つメソッド型を検索または作成します。static MethodHandle
MethodHandles. permuteArguments(MethodHandle target, MethodType newType, int... reorder)
引数の順序を変更することによって、指定されたメソッド・ハンドルの呼出し順序を新しい型に適応させるメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. spreadInvoker(MethodType type, int leadingArgCount)
指定されたtype
の任意のメソッド・ハンドルを呼び出すメソッド・ハンドルを生成しますが、その際、指定された数の末尾の引数が単一の末尾のObject[]
配列で置き換えられます。static String
MethodHandleInfo. toString(int kind, Class<?> defc, String name, MethodType type)
MethodHandleInfo
の文字列表現を、そのシンボリック参照の4つの部分を基に返します。static MethodHandle
MethodHandles. varHandleExactInvoker(VarHandle.AccessMode accessMode, MethodType type)
関連付けられたアクセス・モードの型が指定された型と互換性のあるVarHandle上で、シグネチャ・ポリモーフィック・アクセス・モード・メソッドを呼び出すために使用できる特別な「呼び出しメソッドhandle」を生成します。static MethodHandle
MethodHandles. varHandleInvoker(VarHandle.AccessMode accessMode, MethodType type)
関連付けられたアクセス・モードの型が指定された型と互換性のあるVarHandle上で、シグネチャ・ポリモーフィック・アクセス・モード・メソッドを呼び出すために使用できる特別な「呼び出しメソッドhandle」を生成します。型MethodTypeのパラメータを持つjava.lang.invokeのコンストラクタ コンストラクタ 説明 ConstantCallSite(MethodType targetType, MethodHandle createTargetHook)
永続的なターゲットを持つコール・サイトを作成します(コール・サイト自体にバインドされる場合があります)。MutableCallSite(MethodType type)
指定されたメソッド型を持つ空のコール・サイト・オブジェクトを作成します。VolatileCallSite(MethodType type)
ターゲットへのvolatileバインディングを持つコール・サイトを作成します。 -
jdk.dynalinkでのMethodTypeの使用
MethodTypeを返すjdk.dynalinkのメソッド 修飾子と型 メソッド 説明 MethodType
CallSiteDescriptor. getMethodType()
コール・サイトのメソッドの型。型MethodTypeのパラメータを持つjdk.dynalinkのメソッド 修飾子と型 メソッド 説明 CallSiteDescriptor
CallSiteDescriptor. changeMethodType(MethodType newMethodType)
メソッドの型がこの記述子と異なる呼び出しサイト記述子を検索または作成します。protected CallSiteDescriptor
CallSiteDescriptor. changeMethodTypeInternal(MethodType newMethodType)
メソッドの型がこの記述子と異なる呼び出しサイト記述子を検索または作成します。型MethodTypeのパラメータを持つjdk.dynalinkのコンストラクタ コンストラクタ 説明 CallSiteDescriptor(MethodHandles.Lookup lookup, Operation operation, MethodType methodType)
新しいコール・サイト記述子を作成します。 -
jdk.dynalink.linkerでのMethodTypeの使用
型MethodTypeのパラメータを持つjdk.dynalink.linkerのメソッド 修飾子と型 メソッド 説明 GuardedInvocation
GuardedInvocation. asType(MethodType newType)
MethodHandle.asType(MethodType)
がその呼び出しとそのガードに適用されたかのように、呼び出しのタイプを変更します((戻り値の型がブール値に変更され、ガードに対してパラメータ・カウントが切り捨てられる可能性があります)が1つの場合)。GuardedInvocation
GuardedInvocation. asType(LinkerServices linkerServices, MethodType newType)
LinkerServices.asType(MethodHandle, MethodType)
がその呼び出しとそのガードに適用されたかのように、呼び出しのタイプを変更します((戻り値の型がブール値に変更され、ガードに対してパラメータ・カウントが切り捨てられる可能性があります)が1つの場合)。MethodHandle
LinkerServices. asType(MethodHandle handle, MethodType fromType)
MethodHandle.asType(MethodType)
と同様に、使用可能なすべてのGuardingTypeConverterFactory
実装によって生成されたメソッド・ハンドルをフックし、言語固有の型のパラメータの強制変換を提供します。MethodHandle
MethodTypeConversionStrategy. asType(MethodHandle target, MethodType newType)
メソッド・ハンドルを新しい型に変換します。default MethodHandle
LinkerServices. asTypeLosslessReturn(MethodHandle handle, MethodType fromType)
LinkerServices.asType(MethodHandle, MethodType)
と似ていますが、戻り値の型変換を特別に扱います。GuardedInvocation
GuardedInvocation. asTypeSafeReturn(LinkerServices linkerServices, MethodType newType)
LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType)
がその呼び出しに適用され、(戻り値の型がブール値に変更され、ガードに対してパラメータ・カウントが切り捨てられる可能性があります)が1つの場合、LinkerServices.asType(MethodHandle, MethodType)
がガードに適用されたかのように、呼び出しのタイプを変更します。 -
jdk.dynalink.linker.supportでのMethodTypeの使用
型MethodTypeのパラメータを持つjdk.dynalink.linker.supportのメソッド 修飾子と型 メソッド 説明 static MethodHandle
Guards. asType(MethodHandle test, MethodType type)
ガードとして使用するためのメソッド・ハンドルを取得し、リクエストされた型に適合させますが、ブール値を返します。static MethodHandle
Guards. asType(LinkerServices linkerServices, MethodHandle test, MethodType type)
ガードとして使用するためのメソッド・ハンドルを取得し、リクエストされた型に適合させますが、ブール値を返します。MethodHandle
Lookup. findSpecial(Class<?> declaringClass, String name, MethodType type)
基になるルックアップに対してMethodHandles.Lookup.findSpecial(Class, String, MethodType, Class)
を実行します。MethodHandle
Lookup. findStatic(Class<?> declaringClass, String name, MethodType type)
基になるルックアップに対してMethodHandles.Lookup.findStatic(Class, String, MethodType)
を実行します。MethodHandle
Lookup. findVirtual(Class<?> declaringClass, String name, MethodType type)
基になるルックアップに対してMethodHandles.Lookup.findVirtual(Class, String, MethodType)
を実行します。static MethodHandle
Guards. isArray(int pos, MethodType type)
指定された位置の引数がJava配列の場合にtrueを返すメソッド・ハンドルを作成します。static MethodHandle
Guards. isInstance(Class<?> clazz, int pos, MethodType type)
指定された型の引数を持つメソッド・ハンドルを作成しますが、ブール型の戻り値を持ちます。static MethodHandle
Guards. isInstance(Class<?> clazz, MethodType type)
指定された型の引数を持つメソッド・ハンドルを作成しますが、ブール型の戻り値を持ちます。static MethodHandle
Guards. isOfClass(Class<?> clazz, MethodType type)
指定された型の引数を持つがboolean戻り値を持つガード・メソッド・ハンドルを作成します。