当前位置: 首页 > news >正文

网站版式设计说明数商云价格

网站版式设计说明,数商云价格,鞍山高新区网站,网站的栏目Synthetic是人造,合成的意思,在虚拟机很多地方使用ACC_SYNTHETIC表示编译器自动生成的,区别于我们自己写的程序代码。这样说可能比较模糊,我们举个例子:我们创建一个内部类,如下 public class TestInnerCl…

Synthetic是人造,合成的意思,在虚拟机很多地方使用ACC_SYNTHETIC表示编译器自动生成的,区别于我们自己写的程序代码。这样说可能比较模糊,我们举个例子:我们创建一个内部类,如下

public class TestInnerClass {public void say(String msg) {System.out.println(msg);}class InnerClass {public void sayInner() {say("hello");}}
}

我们用javap看一下内部类InnerClass反编译之后的情况:

完整如下:

Classfile /F:/demo/mallsystem/provider/target/classes/com/mall/test/TestInnerClass$InnerClass.classLast modified 2024-11-28; size 638 bytesMD5 checksum 9f5efd7b8d0ad50545773d2a0e198f60Compiled from "TestInnerClass.java"
class com.mall.test.TestInnerClass$InnerClassminor version: 0major version: 52flags: ACC_SUPER
Constant pool:#1 = Fieldref           #5.#22         // com/mall/test/TestInnerClass$InnerClass.this$0:Lcom/mall/test/TestInnerClass;#2 = Methodref          #6.#23         // java/lang/Object."<init>":()V#3 = String             #24            // hello#4 = Methodref          #25.#26        // com/mall/test/TestInnerClass.say:(Ljava/lang/String;)V#5 = Class              #27            // com/mall/test/TestInnerClass$InnerClass#6 = Class              #28            // java/lang/Object#7 = Utf8               this$0#8 = Utf8               Lcom/mall/test/TestInnerClass;#9 = Utf8               <init>#10 = Utf8               (Lcom/mall/test/TestInnerClass;)V#11 = Utf8               Code#12 = Utf8               LineNumberTable#13 = Utf8               LocalVariableTable#14 = Utf8               this#15 = Utf8               InnerClass#16 = Utf8               InnerClasses#17 = Utf8               Lcom/mall/test/TestInnerClass$InnerClass;#18 = Utf8               sayInner#19 = Utf8               ()V#20 = Utf8               SourceFile#21 = Utf8               TestInnerClass.java#22 = NameAndType        #7:#8          // this$0:Lcom/mall/test/TestInnerClass;#23 = NameAndType        #9:#19         // "<init>":()V#24 = Utf8               hello#25 = Class              #29            // com/mall/test/TestInnerClass#26 = NameAndType        #30:#31        // say:(Ljava/lang/String;)V#27 = Utf8               com/mall/test/TestInnerClass$InnerClass#28 = Utf8               java/lang/Object#29 = Utf8               com/mall/test/TestInnerClass#30 = Utf8               say#31 = Utf8               (Ljava/lang/String;)V
{final com.mall.test.TestInnerClass this$0;descriptor: Lcom/mall/test/TestInnerClass;flags: ACC_FINAL, ACC_SYNTHETICcom.mall.test.TestInnerClass$InnerClass(com.mall.test.TestInnerClass);descriptor: (Lcom/mall/test/TestInnerClass;)Vflags:Code:stack=2, locals=2, args_size=20: aload_01: aload_12: putfield      #1                  // Field this$0:Lcom/mall/test/TestInnerClass;5: aload_06: invokespecial #2                  // Method java/lang/Object."<init>":()V9: returnLineNumberTable:line 12: 0LocalVariableTable:Start  Length  Slot  Name   Signature0      10     0  this   Lcom/mall/test/TestInnerClass$InnerClass;0      10     1 this$0   Lcom/mall/test/TestInnerClass;public void sayInner();descriptor: ()Vflags: ACC_PUBLICCode:stack=2, locals=1, args_size=10: aload_01: getfield      #1                  // Field this$0:Lcom/mall/test/TestInnerClass;4: ldc           #3                  // String hello6: invokevirtual #4                  // Method com/mall/test/TestInnerClass.say:(Ljava/lang/String;)V9: returnLineNumberTable:line 14: 0line 15: 9LocalVariableTable:Start  Length  Slot  Name   Signature0      10     0  this   Lcom/mall/test/TestInnerClass$InnerClass;
}
SourceFile: "TestInnerClass.java"
InnerClasses:#15= #5 of #25; //InnerClass=class com/mall/test/TestInnerClass$InnerClass of class com/mall/test/TestInnerClass

重点看下面标记的,ACC_SYNTHETIC标记出现了

这里编译器在内部类生成了一个TestInnerClass的引用对象this$0,因为是编译器自动合成的,所以标记了ACC_SYNTHETIC。

而下面是内部类的构造方法,可以看到它传入了外部类的实例对象,之后把它赋值给this$0

aload_0默认是实例方法第一个参数是this,即内部类自己的引用

aload_1则是加载第一个入参也就是外部类实例对象

putfield #1就是把外部实例设置给this$0

所以这也就解释了为什么内部类创建需要外部类对象创建了,如果外部类对象还没有生成,怎么传给内部类的构造方法呢?

而我们内部类能调用外部类的方法,也正是通过外部类的实例对象调用的

http://www.yayakq.cn/news/186131/

相关文章:

  • 伍佰亿网站建设查询学校信息的网站
  • 大学生网站开发总结报告建房的网站
  • 网站建设与用户需求分析银川网站建设多少钱
  • 做一家拍卖网站需要什么资质冬奥会网页设计素材
  • 网站建设倒计时单页源码南昌专业网站设计
  • 网站备案核验单2017网站建设方案
  • 网站开发网络结构图网站制作 flash 修改
  • 找人网站 优帮云做挂件像网站
  • 163建筑网站定制公交app下载
  • 网站轮播效果怎么做郑州网站制作郑州网站制作案例
  • 做知识产权相关的网站做营销型网站公司
  • 网站策划建设阶段的推广佛山顺德做网站
  • 监控做直播网站企业网站和官网的区别
  • 有哪些设计网站app网站建设找宙斯站长工具
  • html代码是什么意思搜狗首页排名优化
  • 企业顺德网站建设福建省建设工程信息网站
  • 备案需要网站吗市场部网页设计西安
  • 软文网站名称推广策略怎么写
  • 教育行业建设网站不属于网络虚拟财产
  • 高埗做网站wordpress python插件
  • 口碑好的赣州网站建设吕梁推广型网站建设
  • 网站 建设原则龙南县建设局网站
  • 佛山市网站建设平台上海公司法人落户条件
  • 福州模板做网站163企业邮箱登录
  • 做网站找哪个部门景安服务器安装wordpress
  • 大良网站公司加盟招商网站建设方案书
  • 网站开发李沛杰h5营销型网站功能
  • 国内做的比较好的网站如何做照片ppt模板下载网站
  • 公司建设网站请示php个人网站源码下载
  • 网站开发开始阶段的主要任务包括( )。wordpress 表单邮件