インタフェースInvokeInstruction
- すべてのスーパー・インタフェース:
ClassFileElement
,CodeElement
,Instruction
public sealed interface InvokeInstruction extends Instruction
invokedynamic
以外の Code
属性のcode
配列のメソッド呼出し命令をモデル化します。 対応するopcodesのkindはOpcode.Kind.INVOKE
です。 CodeModel
の要素をトラバースするときに、CodeElement
として提供されます。
メソッド呼出し命令はコンポジットです:
InvokeInstruction
(
Opcode opcode
,
MethodRefEntry | InterfaceMethodRefEntry method
)
)
method
はinvokeinterface
opcodeのInterfaceMethodRefEntry
である必要があり、invokevirtual
opcodeの MethodRefEntry
である必要があります。invokestatic
およびinvokespecial
には、method
のどちらのタイプのエントリでもかまいません。- 導入されたバージョン:
- 24
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明int
count()
invokeinterface
命令のcount
値を返します。その他の命令の場合は0
を返します。boolean
メソッドを保持するクラスまたはインタフェースのどちらがインタフェースであるかを返します。method()
この命令で記述されたMethodRefEntry
またはInterfaceMethodRefEntry
定数を返します。default Utf8Entry
name()
メソッドの名前を返します。static InvokeInstruction
of
(Opcode op, ClassEntry owner, NameAndTypeEntry nameAndType, boolean isInterface) invocation instructionを返します。static InvokeInstruction
of
(Opcode op, ClassEntry owner, Utf8Entry name, Utf8Entry type, boolean isInterface) invocation instructionを返します。static InvokeInstruction
of
(Opcode op, MemberRefEntry method) invocation instructionを返します。default ClassEntry
owner()
メソッドを保持するクラスまたはインタフェースを返します。default Utf8Entry
type()
メソッドのメソッド記述子文字列を返します。default MethodTypeDesc
メソッド・タイプのシンボリック記述子を返します。インタフェースjava.lang.classfile.Instructionで宣言されたメソッド
opcode, sizeInBytes
-
メソッドの詳細
-
method
MemberRefEntry method()この命令で記述されたMethodRefEntry
またはInterfaceMethodRefEntry
定数を返します。- 戻り値:
- この命令で記述された
MethodRefEntry
またはInterfaceMethodRefEntry
定数
-
isInterface
boolean isInterface()メソッドを保持するクラスまたはインタフェースのどちらがインタフェースであるかを返します。- 戻り値:
- メソッドを保持するクラスまたはインタフェースがインタフェースかどうか
-
count
int count()invokeinterface
命令のcount
値を返します。その他の命令の場合は0
を返します。invokeinterface
命令の場合、この値は、すべての引数の「スロット・サイズ」の合計に1を加えた値と同じである必要があります。これは、このインタフェース・メソッド呼出し命令によって消費されるオペランド・スタックの深さの数と同じです。- 戻り値:
invokeinterface
命令のcount
値、または他の命令の0
- Java Virtual Machine仕様を参照してください:
-
6.5.invokeinterface invokeinterface
-
owner
-
name
-
type
default Utf8Entry type()メソッドのメソッド記述子文字列を返します。- APIのノート:
- メソッドのタイプのシンボリック記述子は、
typeSymbol()
から入手できます。 - 戻り値:
- メソッドのメソッド記述子文字列
-
typeSymbol
-
of
static InvokeInstruction of(Opcode op, MemberRefEntry method) invocation instructionを返します。- パラメータ:
op
- 特定のタイプの呼出し命令のopcode。Opcode.Kind.INVOKE
の種類である必要がありますmethod
- メソッドを記述する定数プール・エントリ- 戻り値:
- invocation instruction
- スロー:
IllegalArgumentException
- opcodeの種類がOpcode.Kind.INVOKE
でない場合
-
of
static InvokeInstruction of(Opcode op, ClassEntry owner, Utf8Entry name, Utf8Entry type, boolean isInterface) invocation instructionを返します。- パラメータ:
op
- 特定のタイプの呼出し命令のopcode。Opcode.Kind.INVOKE
の種類である必要がありますowner
- メソッドを保持するクラスname
- メソッドの名前type
- メソッド記述子isInterface
- メソッドを保持するクラスがインタフェースかどうか- 戻り値:
- invocation instruction
- スロー:
IllegalArgumentException
- opcodeの種類がOpcode.Kind.INVOKE
でない場合
-
of
static InvokeInstruction of(Opcode op, ClassEntry owner, NameAndTypeEntry nameAndType, boolean isInterface) invocation instructionを返します。- パラメータ:
op
- 特定のタイプの呼出し命令のopcode。Opcode.Kind.INVOKE
の種類である必要がありますowner
- メソッドを保持するクラスnameAndType
- メソッドの名前とタイプisInterface
- メソッドを保持するクラスがインタフェースかどうか- 戻り値:
- invocation instruction
- スロー:
IllegalArgumentException
- opcodeの種類がOpcode.Kind.INVOKE
でない場合
-