java.lang.Object
java.lang.runtime.ObjectMethods
public class ObjectMethods extends Object
Object.equals(Object)
、Object.hashCode()
、Object.toString()
などのコア・メソッドの状態駆動型実装のブートストラップ・メソッド。 これらのメソッドは、たとえば、レコード・クラスのObject
メソッドの本体を実装するために、Javaコンパイラ実装で使用できます。 - 導入されたバージョン:
- 16
-
メソッドのサマリー
修飾子と型メソッド説明static Object
bootstrap
(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.class
recordClass
- レコード・コンポーネントをホストしているレコード・クラスnames
- コンポーネント名のリスト。";"で区切られた文字列に結合されています。コンポーネントがない場合は空の文字列に結合されます。methodName
パラメータが"equals"
または"hashCode"
の場合、このパラメータは無視されますgetters
- メソッド・ハンドル:コンポーネントのアクセッサ・メソッド- 戻り値:
- iノードによって呼び出された場合はコール・サイト。一度に呼び出された場合はメソッド・ハンドル
- 例外:
IllegalArgumentException
- ブートストラップ引数が無効であるか、一貫性がないかNullPointerException
- 引数がnull
の場合、またはgetters
配列の要素がnull
の場合Throwable
- コール・サイトの構成中に例外がスローされた場合
-