列挙型クラスClassFile.StackMapsOption
java.lang.Object
java.lang.Enum<ClassFile.StackMapsOption>
java.lang.classfile.ClassFile.StackMapsOption
- すべての実装されたインタフェース:
Serializable, ClassFile.Option, Comparable<ClassFile.StackMapsOption>, Constable
- 含まれているインタフェース:
ClassFile
public static enum ClassFile.StackMapsOption extends Enum<ClassFile.StackMapsOption> implements ClassFile.Option
スタック・マップを生成するかどうかを説明するオプションです。 デフォルトは
STACK_MAPS_WHEN_REQUIREDで、スタック・マップを生成するか、互換性がある場合は既存のマップを再利用します。
StackMapTableAttributeは、Code属性から導出されたプロパティで、Java Virtual Machineが1回で検証を実行できるようにします。 したがって、CodeModelの一部としてモデル化されるのではなく、スタック・マップ生成を介してオンデマンドで計算されます。
「アクセスできないコード」またはレガシーの「ジャンプ・ルーチン」命令がある場合は、スタック・マップの生成がIllegalArgumentExceptionで失敗する可能性があります。 DROP_STACK_MAPSオプションを使用すると、ユーザーはStackMapTableAttributeをCodeBuilderに指定することで、独自のスタック・マップを提供できます。
- Java Virtual Machine仕様を参照してください:
-
「4.10.1 タイプ・チェックによる検証」
- 導入されたバージョン:
- 24
- 関連項目:
-
ネストされたクラスのサマリー
Enumクラスで宣言されたネストされたクラス/インタフェース
Enum.EnumDesc<E> -
列挙型定数のサマリー
列挙型定数列挙型定数説明スタック・マップ生成を実行しないでください。スタック・マップの生成を強制的に実行します。スタック・マップを生成するか、互換性がある場合は既存のマップを再利用します。 -
メソッドのサマリー
修飾子と型メソッド説明static ClassFile.StackMapsOption指定された名前を持つこのクラスのenum定数を返します。static ClassFile.StackMapsOption[]values()この列挙クラスの定数を含む配列を宣言されている順序で 返します。Enumクラスで宣言されたメソッド
clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf修飾子と型メソッド説明protected final Objectclone()CloneNotSupportedExceptionをスローします。final intこのenumと指定されたオブジェクトの順序を比較します。このインスタンスの列挙型記述子EnumDescを返します(作成可能な場合)。作成できない場合は空のOptionalを返します。final boolean指定されたオブジェクトがこのenum定数と同じ場合は、trueを返します。protected final voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は削除のために非推奨になりました。final Class<ClassFile.StackMapsOption> このenum定数のenum型に対応するClassオブジェクトを返します。final inthashCode()このenum定数のハッシュ・コードを返します。final Stringname()enum宣言で宣言されているとおりのenum定数の名前を返します。final intordinal()列挙定数の序数(列挙宣言での位置。初期定数はゼロの序数に割り当てられる)を返します。toString()宣言に含まれるとおりのenum定数の名前を返します。static <T extends Enum<T>>
T指定された名前の指定されたenumクラスのenum定数を返します。クラスオブジェクトで宣言されたメソッド
getClass, notify, notifyAll, wait, wait, wait修飾子と型メソッド説明final Class<?> getClass()このObjectの実行時クラスを返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
-
列挙型定数の詳細
-
STACK_MAPS_WHEN_REQUIRED
public static final ClassFile.StackMapsOption STACK_MAPS_WHEN_REQUIREDスタック・マップを生成するか、互換性がある場合は既存のマップを再利用します。 スタック・マップは、メジャー・バージョン50以上に存在します。 これらのバージョンでは、コード配列および例外ハンドラが変換後にまだ互換性がある場合、CodeBuilderは互換性のあるスタック・マップ情報を再利用しようとします。それ以外の場合は、スタック・マップ生成を実行します。 ただし、メジャー・バージョンが50の場合、スタック・マップと互換性のないジャンプ・サブルーチン命令がcode配列に存在することを許可するので、高速には失敗しません。 -
GENERATE_STACK_MAPS
public static final ClassFile.StackMapsOption GENERATE_STACK_MAPSスタック・マップの生成を強制的に実行します。 これにより、スタック・マップ生成が無条件で実行され、なんらかの理由で生成に失敗すると、高速に失敗します。 -
DROP_STACK_MAPS
public static final ClassFile.StackMapsOption DROP_STACK_MAPSスタック・マップ生成を実行しないでください。 コードにブランチまたは例外ハンドラがある場合は、ユーザーは独自のStackMapTableAttributeをCodeBuilderに指定する必要があります。そうしないと、生成されたコードの検証(JVMS 4.10.1)が失敗します。このオプションは、ユーザー指定の
StackMapTableAttributeが考慮されるために必要です。 既存のCode属性のスタック・マップは、このオプションを使用して次のように再利用できます:CodeAttribute code = method.findAttribute(Attributes.code()).orElseThrow(); // Note that StackMapTable may be absent, representing code with no branching code.findAttribute(Attributes.stackMapTable()).ifPresent(cob);
-
-
メソッドの詳細
-
values
public static ClassFile.StackMapsOption[] values()この列挙クラスの定数を含む配列を宣言されている順序で 返します。- 戻り値:
- この列挙クラスの定数を宣言されている順序で含む配列
-
valueOf
public static ClassFile.StackMapsOption valueOf(String name) 指定された名前を持つこのクラスのenum定数を返します。 文字列は、このクラスでenum定数を宣言するために使用される識別子と正確に一致する必要があります。 (不適切な空白文字は許可されません。)- パラメータ:
name- 返される列挙型定数の名前。- 戻り値:
- 指定された名前を持つ列挙型定数
- スロー:
IllegalArgumentException- この列挙型クラスに指定された名前の定数がない場合NullPointerException- 引数がnullの場合
-