java合成关键字。有合成标记的字段和方法是类内部使用的,正常的源代码里不会出现合成领域。小颖编译工具用的就是jad。所有反编译工具都不能保证完全正确地反编译课,所以你不能要求太多。
下面我给大家介绍一下合成
下面的例子是最常见的合成领域
Java代码
类父母{ 公共空间foo () { } 类内部{ 内部(){ foo (); } } } >之前非静态的内部类里面都会有一个0美元的字段保存它的父对象。编译后的内部类就像下面这样:
Java代码类父母内心{美元 合成父母这$ 0; 父母内心的美元(父这$ 0) { 这一点。这个$ 0=0; 这0.美元foo (); } }所有父对象的非私有成员都通过这个美元0来访问。
还有许多用到合成的地方。比如使用了断言关键字的类会有一个静态布尔合成美元assertionsDisabled字段
使用了断言的地方
断言条件;
在班级里被编译成
Java代码如果(!assertionsDisabled美元,,!条件){ 把新AssertionError (); } >之前还有,在jvm里,所有类的私有成员都不允许在其他类里访问,包括它的内部类,在爪哇语言里内部类是可以访问父类的私有成员的。在课堂里是用如下的方法实现的:
Java代码
类父母{ 私人int value=https://www.yisu.com/zixun/0; 合成静态int(父obj)获得000美元 { 返回值; } }在内部类里通过访问000美元来访问值字段。
合成的概念根据JVM规范:“一个类成员,不出现在源代码中必须使用合成属性。”也,”<>强介绍了合成属性在JDK 1.1版本支持嵌套类和接口>强。”
我知道有时嵌套类和合成承包人合理使用合成实现字段,例如<强>一个内部类可以使用合成场拯救其外部类实例的引用,这可能会生成一个合成contructor正确设置该字段>强。我不确定它仍然Java使用合成构造函数或方法,但是我敢肯定的是我看到了他们的过去。我不知道为什么他们需要合成的类。另一方面,类似RMI或数组。代理应该创建合成类,因为这些类实际上并不出现在源代码中。我只是跑测试,代理没有创建一个合成的实例,但我相信这可能是一个错误。
嗯,我们讨论了这一段时间以前回到这里。太阳似乎是忽略这个合成属性,至少在类,我们也应该。
注意上文的第一处黑体部分,一个类的复合属性表示他支持嵌套的类或者接口。
注意上文的第二处黑体部分,说明符合这个概念就是OO思想中的类的复合,也就是只要含有其它类的引用即为复合。
以上就是本文关于Java编程中合成的关键字的全部内容,希望对大家能有所帮助。感谢大家对本站的支持。
浅谈Java编程中合成的关键字