クラスObjectMethods
java.lang.Object
java.lang.runtime.ObjectMethods
public class ObjectMethods extends Object
Object.equals(Object)、Object.hashCode()、Object.toString()などのコア・メソッドの状態駆動型実装のブートストラップ・メソッド。 これらのメソッドは、たとえば、レコード・クラスのObjectメソッドの本体を実装するために、Javaコンパイラ実装で使用できます。 - 導入されたバージョン:
- 16
-
メソッドのサマリー
修飾子と型メソッド説明static Objectbootstrap(MethodHandles.Lookup lookup, String methodName, TypeDescriptor type, Class<?> recordClass, String names, MethodHandle... getters) invokedynamicコール・サイトまたは動的な定数プール・エントリのコンポーネント名およびアクセッサ・メソッドの説明に基づいて、Object.equals(Object)、Object.hashCode()およびObject.toString()メソッドを生成するブートストラップ・メソッド。
-
メソッドの詳細
-
bootstrap
public static Object bootstrap(MethodHandles.Lookup lookup, String methodName, TypeDescriptor type, Class<?> recordClass, String names, MethodHandle... getters) throws Throwable invokedynamicコール・サイトまたは動的な定数プール・エントリのコンポーネント名およびアクセッサ・メソッドの説明に基づいて、Object.equals(Object)、Object.hashCode()およびObject.toString()メソッドを生成するブートストラップ・メソッド。 生成されるメソッドのセマンティクスの詳細は、Record.equals(Object)、Record.hashCode()およびRecord.toString()の仕様を参照してください。- パラメータ:
lookup- すべてのブートストラップ・メソッドは、通常はコール元のアクセシビリティ権限で検索コンテキストを表すlookupを持つ必要があります。 これは、invokedynamicコール・サイトでは常に対応するブートストラップ・メソッドにlookupが提供されるが、このメソッドではlookupパラメータが無視されるためです。methodName- 生成するメソッドの名前("equals"、"hashCode"または"toString"のいずれか)type- メソッドの記述子タイプに対応するMethodType(invokedynamicコール・サイトをリンクする場合、対応するObjectメソッドの記述子に対応する必要があります)または動的定数をリンクする場合は、定数MethodHandle.classrecordClass- レコード・コンポーネントをホストしているレコード・クラスnames- コンポーネント名のリスト。";"で区切られた文字列に結合されています。コンポーネントがない場合は空の文字列に結合されます。methodNameパラメータが"equals"または"hashCode"の場合、このパラメータは無視されますgetters- メソッド・ハンドル:コンポーネントのアクセッサ・メソッド- 戻り値:
- iノードによって呼び出された場合はコール・サイト。一度に呼び出された場合はメソッド・ハンドル
- スロー:
IllegalArgumentException- ブートストラップ引数が無効であるか、一貫性がないかNullPointerException- 引数がnullの場合、またはgetters配列の要素がnullの場合Throwable- コール・サイトの構成中に例外がスローされた場合
-