- java.lang.Object
-
- jdk.dynalink.linker.support.Lookup
-
public final class Lookup extends Object
チェックされた例外をマスクするMethodHandles.Lookup
のラッパーです。 独自のコードベース(したがって、存在しない場合はエラーです)内でメソッドを検索する場合に便利です。
-
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 static Lookup
PUBLIC
MethodHandles.publicLookup()
をラップする正規のLookupオブジェクトです。
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 Lookup(MethodHandles.Lookup lookup)
MethodHandles.Lookup
のインスタンスにバインドされた新しいインスタンスを作成します。
-
メソッドのサマリー
-
-
-
フィールドの詳細
-
PUBLIC
public static final Lookup PUBLIC
MethodHandles.publicLookup()
をラップする正規のLookupオブジェクトです。
-
-
コンストラクタの詳細
-
Lookup
public Lookup(MethodHandles.Lookup lookup)
MethodHandles.Lookup
のインスタンスにバインドされた新しいインスタンスを作成します。- パラメータ:
lookup
- それが委任するMethodHandles.Lookup
。
-
-
メソッドの詳細
-
unreflect
public MethodHandle unreflect(Method m)
- パラメータ:
m
- 反射させないメソッド- 戻り値:
- 未反映のメソッド・ハンドル。
- 例外:
IllegalAccessError
- メソッドにアクセスできない場合。
-
unreflect
public static MethodHandle unreflect(MethodHandles.Lookup lookup, Method m)
- パラメータ:
lookup
- ルックアップを使用して未反映m
- 反射させないメソッド- 戻り値:
- 未反映のメソッド・ハンドル。
- 例外:
IllegalAccessError
- メソッドにアクセスできない場合。
-
unreflectGetter
public MethodHandle unreflectGetter(Field f)
MethodHandles.Lookup.unreflectGetter(Field)
を実行し、発生したIllegalAccessException
をIllegalAccessError
に変換します。- パラメータ:
f
- ゲッターが反射されないフィールド- 戻り値:
- 未反映のフィールド・ゲッター・ハンドル。
- 例外:
IllegalAccessError
- ゲッターにアクセスできない場合。
-
findGetter
public MethodHandle findGetter(Class<?> refc, String name, Class<?> type)
MethodHandles.Lookup.findGetter(Class, String, Class)
を実行し、発生したIllegalAccessException
をIllegalAccessError
に変換し、NoSuchFieldException
をNoSuchFieldError
に変換します。- パラメータ:
refc
- フィールドを宣言するクラスname
- フィールドの名前type
- フィールドの型- 戻り値:
- 未反映のフィールド・ゲッター・ハンドル。
- 例外:
IllegalAccessError
- フィールドにアクセスできない場合。NoSuchFieldError
- フィールドが存在しない場合。
-
unreflectSetter
public MethodHandle unreflectSetter(Field f)
MethodHandles.Lookup.unreflectSetter(Field)
を実行し、発生したIllegalAccessException
をIllegalAccessError
に変換します。- パラメータ:
f
- セッターが反射されていないフィールド- 戻り値:
- 未反映フィールド・セッター・ハンドル。
- 例外:
IllegalAccessError
- フィールドにアクセスできない場合。NoSuchFieldError
- フィールドが存在しない場合。
-
unreflectConstructor
public MethodHandle unreflectConstructor(Constructor<?> c)
MethodHandles.Lookup.unreflectConstructor(Constructor)
を実行し、発生したIllegalAccessException
をIllegalAccessError
に変換します。- パラメータ:
c
- 未反映のコンストラクタ- 戻り値:
- 未反映のコンストラクタ・ハンドル。
- 例外:
IllegalAccessError
- コンストラクタにアクセスできない場合。
-
unreflectConstructor
public static MethodHandle unreflectConstructor(MethodHandles.Lookup lookup, Constructor<?> c)
MethodHandles.Lookup.unreflectConstructor(Constructor)
を実行し、発生したIllegalAccessException
をIllegalAccessError
に変換します。- パラメータ:
lookup
- ルックアップを使用して未反映c
- 未反映のコンストラクタ- 戻り値:
- 未反映のコンストラクタ・ハンドル。
- 例外:
IllegalAccessError
- コンストラクタにアクセスできない場合。
-
findSpecial
public MethodHandle findSpecial(Class<?> declaringClass, String name, MethodType type)
基になるルックアップに対してMethodHandles.Lookup.findSpecial(Class, String, MethodType, Class)
を実行します。 遭遇したIllegalAccessException
をIllegalAccessError
に変換し、NoSuchMethodException
をNoSuchMethodError
に変換します。- パラメータ:
declaringClass
- メソッドを宣言するクラスname
- メソッドの名前type
- メソッドの型- 戻り値:
- メソッドのメソッド・ハンドル
- 例外:
IllegalAccessError
- メソッドにアクセスできない場合。NoSuchMethodError
- メソッドが存在しない場合。
-
findStatic
public MethodHandle findStatic(Class<?> declaringClass, String name, MethodType type)
基になるルックアップに対してMethodHandles.Lookup.findStatic(Class, String, MethodType)
を実行します。 遭遇したIllegalAccessException
をIllegalAccessError
に変換し、NoSuchMethodException
をNoSuchMethodError
に変換します。- パラメータ:
declaringClass
- メソッドを宣言するクラスname
- メソッドの名前type
- メソッドの型- 戻り値:
- メソッドのメソッド・ハンドル
- 例外:
IllegalAccessError
- メソッドにアクセスできない場合。NoSuchMethodError
- メソッドが存在しない場合。
-
findVirtual
public MethodHandle findVirtual(Class<?> declaringClass, String name, MethodType type)
基になるルックアップに対してMethodHandles.Lookup.findVirtual(Class, String, MethodType)
を実行します。 遭遇したIllegalAccessException
をIllegalAccessError
に変換し、NoSuchMethodException
をNoSuchMethodError
に変換します。- パラメータ:
declaringClass
- メソッドを宣言するクラスname
- メソッドの名前type
- メソッドの型- 戻り値:
- メソッドのメソッド・ハンドル
- 例外:
IllegalAccessError
- メソッドにアクセスできない場合。NoSuchMethodError
- メソッドが存在しない場合。
-
findOwnSpecial
public static MethodHandle findOwnSpecial(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes)
ルックアップがあれば、そのルックアップ・クラスのメソッドをfindSpecial(Class, String, MethodType)
で見つけます。 便利なクラス・コードでは、自分のプライベートにリンクするのに便利です。- パラメータ:
lookup
- クラスのルックアップname
- メソッドの名前rtype
- メソッドの戻り値の型ptypes
- メソッドのパラメータ型- 戻り値:
- メソッドのメソッド・ハンドル
-
findOwnSpecial
public MethodHandle findOwnSpecial(String name, Class<?> rtype, Class<?>... ptypes)
findSpecial(Class, String, MethodType)
を使ってそのルックアップ・クラスのメソッドを検索します。 便利なクラス・コードでは、自分のプライベートにリンクするのに便利です。findSpecial
よりも便利なのは、パラメータ型をリストするだけで、ルックアップ・クラスを指定する必要がないという点です。- パラメータ:
name
- メソッドの名前rtype
- メソッドの戻り値の型ptypes
- メソッドのパラメータ型- 戻り値:
- メソッドのメソッド・ハンドル
-
findOwnStatic
public static MethodHandle findOwnStatic(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes)
ルックアップがあれば、そのルックアップ・クラスのメソッドをfindStatic(Class, String, MethodType)
で見つけます。 便利なクラス・コードでは、自分のプライベートにリンクするのに便利です。findStatic
よりも使用する方が簡単です。パラメータ型をリストするだけでよく、ルックアップ・クラスを指定する必要はありません。- パラメータ:
lookup
- クラスのルックアップname
- メソッドの名前rtype
- メソッドの戻り値の型ptypes
- メソッドのパラメータ型- 戻り値:
- メソッドのメソッド・ハンドル
-
findOwnStatic
public MethodHandle findOwnStatic(String name, Class<?> rtype, Class<?>... ptypes)
findStatic(Class, String, MethodType)
を使ってそのルックアップ・クラスのメソッドを検索します。 便利なクラス・コードでは、自分のプライベートにリンクするのに便利です。findStatic
よりも使用する方が簡単です。パラメータ型をリストするだけでよく、ルックアップ・クラスを指定する必要はありません。- パラメータ:
name
- メソッドの名前rtype
- メソッドの戻り値の型ptypes
- メソッドのパラメータ型- 戻り値:
- メソッドのメソッド・ハンドル
-
-