クラスjava.lang.invoke.MethodType
の使用
パッケージ
説明
Javaプログラミング言語の設計にあたり基本的なクラスを提供します。
java.lang.invoke
パッケージは、Java Virtual Machineとやりとりするための低レベルのプリミティブを提供します。java.lang.runtime
パッケージでは、Java言語の低レベルのランタイム・サポートが提供されます。invokedynamic
コール・サイトをリンクするためのインタフェースとクラスが含まれています。
独自の言語固有のオブジェクト・モデルと型変換を実装するために、言語ランタイムに必要なインタフェースとクラスが含まれています。
言語ランタイムが、言語固有のオブジェクト・モデルを実装し、いくつかのクラスの基本的な実装とさまざまなユーティリティを提供することによってコンバージョンをより便利にするクラスが含まれています。
Javaから直接、低レベルで効率的な外部メモリー/ファンクション・アクセスをサポートするクラス。
-
java.langでのMethodTypeの使用
修飾子と型メソッド説明default MethodType
StackWalker.StackFrame.getMethodType()
このスタック・フレームによって表されるメソッドのパラメータ型と戻り値の型を表すMethodType
を返します。 -
java.lang.invokeでのMethodTypeの使用
修飾子と型メソッド説明final MethodType
VarHandle.accessModeType
(VarHandle.AccessMode accessMode) このVarHandleのアクセス・モードの型とアクセス・モードを取得します。MethodType.appendParameterTypes
(Class<?>... ptypesToInsert) 追加のパラメータの型を持つメソッド型を検索または作成します。MethodType.appendParameterTypes
(List<Class<?>> ptypesToInsert) 追加のパラメータの型を持つメソッド型を検索または作成します。MethodType.changeParameterType
(int num, Class<?> nptype) 1つのパラメータの型が異なるメソッド型を検索または作成します。MethodType.changeReturnType
(Class<?> nrtype) 戻り値の型が異なるメソッド型を検索または作成します。MethodType.dropParameterTypes
(int start, int end) いくつかのパラメータの型が削除されたメソッド型を検索または作成します。MethodType.erase()
すべての参照型を消去してObject
にします。static MethodType
MethodType.fromMethodDescriptorString
(String descriptor, ClassLoader loader) バイト・コード記述子のスペリングに基づいてメソッド型のインスタンスを検索または作成します。MethodType.generic()
すべての型(参照とプリミティブの両方)をObject
に変換します。static MethodType
MethodType.genericMethodType
(int objectArgCount) コンポーネントがすべてObject
であるようなメソッド型を検索または作成します。static MethodType
MethodType.genericMethodType
(int objectArgCount, boolean finalArray) Object
とオプションで末尾のObject[]
配列をコンポーネントに持つメソッド型を検索または作成します。MethodHandleInfo.getMethodType()
解決されたシンボリック参照の公称型をメソッド型として表現して返します。MethodType.insertParameterTypes
(int num, Class<?>... ptypesToInsert) 追加のパラメータの型を持つメソッド型を検索または作成します。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) 指定されたコンポーネントを持つメソッド型を検索または作成します。CallSite.type()
このコール・サイトのターゲットの型を返します。MethodHandle.type()
このメソッド・ハンドルの型を報告します。MethodType.unwrap()
すべてのラッパー型を対応するプリミティブ型に変換します。MethodType.wrap()
すべてのプリミティブ型を対応するラッパー型に変換します。修飾子と型メソッド説明static CallSite
LambdaMetafactory.altMetafactory
(MethodHandles.Lookup caller, String interfaceMethodName, MethodType factoryType, Object... args) 適切な型適応および引数の部分評価の後、指定されたMethodHandle
への委譲により、1つ以上のインタフェースを実装する単純な関数オブジェクトの作成を容易にします。MethodHandle.asType
(MethodType newType) 現在のメソッド・ハンドルの型を新しい型に適応させるアダプタ・メソッド・ハンドルを生成します。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) 指定されたメソッド・ハンドルの型を新しい型に適応させるために、引数と戻り値の型の変換をペア単位で行うメソッド・ハンドルを生成します。MethodHandles.Lookup.findConstructor
(Class<?> refc, MethodType type) 指定された型のコンストラクタを使ってオブジェクトの作成と初期化を行うメソッド・ハンドルを生成します。MethodHandles.Lookup.findSpecial
(Class<?> refc, String name, MethodType type, Class<?> specialCaller) 仮想メソッドの早期にバインドされるメソッド・ハンドルを生成します。MethodHandles.Lookup.findStatic
(Class<?> refc, String name, MethodType type) staticメソッドのメソッド・ハンドルを生成します。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 interfaceMethodName, MethodType factoryType, MethodType interfaceMethodType, MethodHandle implementation, MethodType dynamicMethodType) 適切な型適応および引数の部分評価の後、指定された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」を生成します。修飾子コンストラクタ説明protected
ConstantCallSite
(MethodType targetType, MethodHandle createTargetHook) 永続的なターゲットを持つコール・サイトを作成します(コール・サイト自体にバインドされる場合があります)。MutableCallSite
(MethodType type) 指定されたメソッド型を持つ空のコール・サイト・オブジェクトを作成します。VolatileCallSite
(MethodType type) ターゲットへのvolatileバインディングを持つコール・サイトを作成します。 -
java.lang.runtimeでのMethodTypeの使用
修飾子と型メソッド説明static CallSite
SwitchBootstraps.enumSwitch
(MethodHandles.Lookup lookup, String invocationName, MethodType invocationType, Object... labels) 列挙型のターゲットにswitch
を実装するinvokedynamic
コール・サイトをリンクするためのブートストラップ・メソッド。static CallSite
SwitchBootstraps.typeSwitch
(MethodHandles.Lookup lookup, String invocationName, MethodType invocationType, Object... labels) 参照タイプのターゲットにswitch
を実装するinvokedynamic
コール・サイトをリンクするためのブートストラップ・メソッド。 -
jdk.dynalinkでのMethodTypeの使用
修飾子と型メソッド説明final CallSiteDescriptor
CallSiteDescriptor.changeMethodType
(MethodType newMethodType) メソッドの型がこの記述子と異なる呼び出しサイト記述子を検索または作成します。protected CallSiteDescriptor
CallSiteDescriptor.changeMethodTypeInternal
(MethodType newMethodType) メソッドの型がこの記述子と異なる呼び出しサイト記述子を検索または作成します。修飾子コンストラクタ説明CallSiteDescriptor
(MethodHandles.Lookup lookup, Operation operation, MethodType methodType) 新しいコール・サイト記述子を作成します。 -
jdk.dynalink.linkerでのMethodTypeの使用
修飾子と型メソッド説明GuardedInvocation.asType
(MethodType newType) MethodHandle.asType(MethodType)
がその呼び出しとそのガードに適用されたかのように、呼び出しのタイプを変更します((戻り値の型がブール値に変更され、ガードに対してパラメータ・カウントが切り捨てられる可能性があります)が1つの場合)。GuardedInvocation.asType
(LinkerServices linkerServices, MethodType newType) LinkerServices.asType(MethodHandle, MethodType)
がその呼び出しとそのガードに適用されたかのように、呼び出しのタイプを変更します((戻り値の型がブール値に変更され、ガードに対してパラメータ・カウントが切り捨てられる可能性があります)が1つの場合)。LinkerServices.asType
(MethodHandle handle, MethodType fromType) MethodHandle.asType(MethodType)
と同様に、使用可能なすべてのGuardingTypeConverterFactory
実装によって生成されたメソッド・ハンドルをフックし、言語固有の型のパラメータの強制変換を提供します。MethodTypeConversionStrategy.asType
(MethodHandle target, MethodType newType) メソッド・ハンドルを新しい型に変換します。default MethodHandle
LinkerServices.asTypeLosslessReturn
(MethodHandle handle, MethodType fromType) LinkerServices.asType(MethodHandle, MethodType)
と似ていますが、戻り値の型変換を特別に扱います。GuardedInvocation.asTypeSafeReturn
(LinkerServices linkerServices, MethodType newType) LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType)
がその呼び出しに適用され、(戻り値の型がブール値に変更され、ガードに対してパラメータ・カウントが切り捨てられる可能性があります)が1つの場合、LinkerServices.asType(MethodHandle, MethodType)
がガードに適用されたかのように、呼び出しのタイプを変更します。 -
jdk.dynalink.linker.supportでのMethodTypeの使用
修飾子と型メソッド説明static MethodHandle
Guards.asType
(MethodHandle test, MethodType type) ガードとして使用するためのメソッド・ハンドルを取得し、リクエストされた型に適合させますが、ブール値を返します。static MethodHandle
Guards.asType
(LinkerServices linkerServices, MethodHandle test, MethodType type) ガードとして使用するためのメソッド・ハンドルを取得し、リクエストされた型に適合させますが、ブール値を返します。Lookup.findSpecial
(Class<?> declaringClass, String name, MethodType type) 基になるルックアップに対してMethodHandles.Lookup.findSpecial(Class, String, MethodType, Class)
を実行します。Lookup.findStatic
(Class<?> declaringClass, String name, MethodType type) 基になるルックアップに対してMethodHandles.Lookup.findStatic(Class, String, MethodType)
を実行します。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戻り値を持つガード・メソッド・ハンドルを作成します。 -
jdk.incubator.foreignでのMethodTypeの使用
修飾子と型メソッド説明CLinker.downcallHandle
(MethodType type, FunctionDescriptor function) 指定された型を持つ外部メソッド・ハンドルを取得し、指定された関数記述子を特徴とします。この記述子は、アドレスのターゲット外部関数をコールするために使用できます。CLinker.downcallHandle
(Addressable symbol, MethodType type, FunctionDescriptor function) 指定された型を持つ外部メソッド・ハンドルを取得し、指定された関数記述子を特徴とします。この記述子は、指定されたアドレスのターゲット外部関数をコールするために使用できます。CLinker.downcallHandle
(Addressable symbol, SegmentAllocator allocator, MethodType type, FunctionDescriptor function) 指定された型を持つ外部メソッド・ハンドルを取得し、指定された関数記述子を特徴とします。この記述子は、指定されたアドレスでターゲットの外部関数を呼び出すために使用できます。