Synthetic,synthetic performance

  Synthetic,synthetic performance

  标有synthetic的字段和方法在类内部使用,一般源代码中不会出现synthetic字段。小型编译器工具使用jad。所有的反编译器都不能保证完全正确地反编译类。所以不能要求太多。

  我给你介绍一下合成的。

  下面这个例子是最常见的合成场。

  类父级

  {

  public void foo()

  {

  }

  内部类

  {

  内部()

  {

  foo();

  }

  }

  }

  每个非静态内部类都有一个$0字段来保存其父对象。编译后的内部类如下所示:

  类父$inner

  {

  合成母本0美元;

  父$inner(父this$0)

  {

  this.this $ 0=this $ 0

  this $ 0 . foo();

  }

  }

  父对象的所有非私有成员都通过这个$0来访问。

  合成纤维有许多用途。例如,使用assert关键字的类将有一个

  合成静态布尔$断言禁用字段

  使用断言的位置

  断言条件;

  在类中编译成

  如果(!$ assertionsDisabled已禁用!条件)

  {

  抛出新的assertion error();

  }

  同样,在jvm中,类的所有私有成员都不允许访问其他类,包括它的内部类。在java语言中,内部类可以访问父类的私有成员。在类中,它是通过以下方式实现的:

  类父级

  {

  private int value=0;

  合成静态int访问$000(父对象)

  {

  返回值;

  }

  }

  通过内部类中的access$000访问值字段。

  希望通过以上例子,大家对合成有所了解。

  出发地:

  http://www.cjsdn.net/post/print?bid=1 id=130784http://www . cnblogs . com/keis/archive/2011/03/10/1979760 . html

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: