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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。