ASMSupport教程4.2
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
<h2>4.2 生成Return操作</h2> <p>這一節(jié)我們將講述如何生成return操作,我們將生成如下代碼:</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:0041272d-4ecf-4039-a991-b5323856859d" class="wlWriterEditableSmartContent"><pre class="brush: java; gutter: true; first-line: 1; tab-size: 4; toolbar: true; width: 964px; height: 263px;" style=" width: 964px; height: 263px;overflow: auto;">package generated.operators;
import java.io.PrintStream;
public class ReturnOperatorGenerateExample { public static String commonMethod() { return "I'm from commonMethod"; }
public static void main(String[] args) { System.out.println(commonMethod()); } }</pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></div>
<p>這段代碼的兩個(gè)方法的返回類型分別是String和void,對(duì)應(yīng)的ASMSupport的代碼如下:</p>
<p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:74055c8b-f8a1-4671-a4d4-5f47171f957e" class="wlWriterEditableSmartContent"><pre class="brush: java; gutter: true; first-line: 1; tab-size: 4; toolbar: true; width: 964px; height: 471px;" style=" width: 964px; height: 471px;overflow: auto;">public static void main(String[] args) { ClassCreator creator = new ClassCreator(Opcodes.V1_5, Opcodes.ACC_PUBLIC , "generated.operators.ReturnOperatorGenerateExample", null, null);
/* * 有返回類型的方法*/ creator.createStaticMethod("commonMethod", null, null, AClass.STRING_ACLASS, null, Opcodes.ACC_PUBLIC, new StaticMethodBody(){@Overridepublic void generateBody(LocalVariable... argus) {runReturn(Value.value("I'm from commonMethod"));} });/* * 無返回類型的方法*/ creator.createStaticMethod("main", new AClass[]{AClassFactory.getProductClass(String[].class)}, new String[]{"args"}, null, null,Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, new StaticMethodBody(){@Overridepublic void generateBody(LocalVariable... argus) {invoke(systemOut, "println", invokeStatic(getMethodOwner(), "commonMethod"));runReturn();} }); generate(creator);}</pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></div>
</p>
<p>這里我們主要關(guān)注的是runReturn(Value.value("I'm from commonMethod"))和runReturn(),前者是非void的,參數(shù)就是我們方法需要返回的值,后者就是直接return,沒有返回值。</p>
轉(zhuǎn)載于:https://my.oschina.net/wensiqun/blog/140070
總結(jié)
以上是生活随笔為你收集整理的ASMSupport教程4.2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: WordPress在nginx下的URL
- 下一篇: VMware ESXi导出OVF模板
