欢迎来到天天文库
浏览记录
ID:30769198
大小:255.92 KB
页数:16页
时间:2019-01-03
《java语法糖之foreach-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Java语法糖Zforcach-编程开发技术Java语法糖之foreach原文出处:朱小厮语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用了。这些语法糖虽然不会提供实质性的功能改进,但是它们或能提高性能、或能提升语法的严谨性、或能减少编码出错的机会。Java提供给了用户大量的语法糖,比如泛型、自动装箱、自动拆箱、foreach循环、变长参数、内部类、枚举类、断言(assert)等。本篇主要是讲解foreach
2、,foreach的语法经过编译Z后解析成什么呢?首先来看一个例子:packageforeach;importjava.util.ArrayList;importjava.util.List;publicclassForeachTest{publicstaticvoidmain(String[]args){Lising>list二newArrayLislist.add("sl〃);list.addC,s2,/);for(Strings:list){System,out.println(s);}对这个类进行反编译:javacForeachTest.ja
3、vajavap-verboseForeachTest>fl.txt打开fl.txt,结果如下所示:Classfile/D:/workspace_jee/JavaTest/src/foreach/ForeachTest・classLastmodified2016-2-25;size798bytesMD5checksumc64e6f81f34dldfc7834ad8d5b3bl801Compiledfrom^ForeachTest.java"publicclassforeach.ForeachTestSourccFilc:^ForeachTest・ja
4、va,zminorversion:0majorversion:51flags:ACC_PUBLIC,ACC_SUPERConstantpool:////java/uti1/ArrayList////si////s2//#1=Mcthodrcf#14.#26java/lang/Object.()V#2=Class#27#3二Methodref#2.#26java/util/ArrayList.z,,z:()V#4=String#28#5=InterfaceMethodref#29.#30java/util/List.add:(Ljava/
5、lang/Object;)Z#6二String#31#7二InterfaceMethodref#29.#32java/util/List・iterator:()Ljava/util/Itcrator;#8=InterfaceMethodref#33.#34//java/util/Iterator・hasNext:()Z#9二InterfaceMethodref#33.#35//java/uti1/Iterator,next:()Ljava/1ang/Object;#10=Class#36//java/1ang/String#11=Fieldref#
6、37.#38//java/lang/System.out:Ljava/io/PrintStream;#12二Methodref#39.#40//java/io/PrintStream.printin:(Ljava/1ang/String;)V#13=Class#41//forcach/ForcachTcst#14=Class#42//java/lang/Object#15=Utf8#16二Utf8()v#17二Utf8Code#18=Utf8LincNumbcrTab1c#19=Utf8main#20=Utf8([Ljava/lang/
7、String;)V#21二Utf8StackMapTable#22二Class#43//java/uti1/List#23=Class#44//java/util/Iterator#24=Utf8SourceFile#25=Utf8ForeachTest.java#26二NameAndType#15:#16//,z,z:()V#28=Utf8si#29二Class#43//java/util/List#30二NameAndType#45:#46//add:(Ljava/lang/Objcct;)Z#31=Utf8s2#32=NameAn
8、dType#47:#48//iterator:()Ljava/util/Iterator;#33=Class#44//ja
此文档下载收益归作者所有