📄 instructions2.doc103.html
字号:
<html><head><title>VM Spec </title></head><body BGCOLOR=#eeeeff text=#000000 LINK=#0000ff VLINK=#000077 ALINK=#ff0000> <a href="VMSpecTOC.doc.html">Contents</a> | <a href="Instructions2.doc102.html">Prev</a> | <a href="Instructions2.doc104.html">Next</a> | <a href="Mnemonics.doc.html">Index</a><hr><br> <a name="invokeinterface"></a><h2>invokeinterface</h2><a name="invokeinterface.Operation"></a><b>Operation</b><br><a name="68788"></a>Invoke interface method<p><Table Border="3"><tr><td><a name="68779"></a> <i>invokeinterface</i><td><a name="87568"></a> <tr><td><a name="68781"></a> <i>indexbyte1</i><td><a name="87568"></a> <tr><td><a name="68783"></a> <i>indexbyte2</i><td><a name="87568"></a> <tr><td><a name="68785"></a> <i>nargs</i><td><a name="87568"></a> <tr><td><a name="68787"></a> <i>0</i><td><a name="87568"></a> </Table><Table><tr><td></Table><p><a name="invokeinterface.Forms"></a><b>Forms</b><br><a name="68789"></a><i>invokeinterface</i> = 185 (0xb9)<p><a name="invokeinterface.Stack"></a><b>Stack</b><br><a name="68790"></a>...<em>, </em><i>objectref</i><em>, [</em><i>arg1</i><em>, [</em><i>arg2</i><em> </em>...<em>]] </em><img src="chars/arrwdbrt.gif"> ...<p><a name="invokeinterface.Description"></a><b>Description</b><br><a name="68791"></a>The unsigned <i>indexbyte1</i> and <i>indexbyte2</i> are used to construct an index into the constant pool of the current class <a href="Overview.doc.html#17257">(§3.6)</a>, where the value of the index is (<i>indexbyte1</i> << 8) | <i>indexbyte2</i>. The item at that index in the constant pool must have the tag <code>CONSTANT_InterfaceMethodref</code> <a href="ClassFile.doc.html#4723">(§4.4.2)</a>, a reference to an interface name, a method name, and the method's descriptor <a href="ClassFile.doc.html#7035">(§4.3.3)</a>. The constant pool item is resolved <a href="ConstantPool.doc.html#64064">(§5.3)</a>. The interface method must not be <code><init></code>, an instance initialization method <a href="Overview.doc.html#12174">(§3.8)</a>, or <code><clinit></code>, a class or interface initialization method <a href="Overview.doc.html#12174">(§3.8)</a>. <p><a name="68804"></a>The <i>nargs</i> operand is an unsigned byte which must not be zero. The <i>objectref</i> must be of type <code>reference</code> and must be followed on the operands stack by <i>nargs</i> - 1 words of arguments. The number of words of arguments and the type and order of the values they represent must be consistent with the descriptor of the selected interface method.<p><a name="68805"></a>The method table of the class of the type of <i>objectref</i> is determined. If <i>objectref</i> is an array type, then the method table of class <code>Object</code> is used. The method table is searched for a method whose name and descriptor are identical to the name and descriptor of the resolved constant pool entry.<p><hr><!-- This inserts footnotes--><p><a href="VMSpecTOC.doc.html">Contents</a> | <a href="Instructions2.doc102.html">Prev</a> | <a href="Instructions2.doc104.html">Next</a> | <a href="Mnemonics.doc.html">Index</a><p><font size=-1>Java Virtual Machine Specification (HTML generated by dkramer on February 25, 1997)<br><i><a href="Copyright.doc.html">Copyright © 1996 Sun Microsystems, Inc.</a>All rights reserved</i><br>Please send any comments or corrections to <a href="mailto:doug.kramer@sun.com">doug.kramer@sun.com</a></font></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -