Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的合成字段是什么?_Java_Compiler Construction_Field_Inner Classes_Synthetic - Fatal编程技术网

Java中的合成字段是什么?

Java中的合成字段是什么?,java,compiler-construction,field,inner-classes,synthetic,Java,Compiler Construction,Field,Inner Classes,Synthetic,有人能用一种简单易懂的方式解释Java中合成字段的重要性吗。我记得在非静态内部类的上下文中读过它,其中每个这样的内部类实例都维护对封闭类的引用。为什么这样的引用/字段称为合成字段?合成字段是编译器创建的字段,它将局部内部类链接到块的局部变量或引用类型参数。编译器合成某些隐藏字段和方法以实现名称的作用域。除非另有说明,否则这些字段是私有的,或者它们最多在包范围内。您可以在中获得更多信息和信息 源代码中未出现的类成员必须使用合成属性进行标记,否则必须设置其ACC_合成标志。此要求的唯一例外是编译器生

有人能用一种简单易懂的方式解释Java中合成字段的重要性吗。我记得在非静态内部类的上下文中读过它,其中每个这样的内部类实例都维护对封闭类的引用。为什么这样的引用/字段称为合成字段?

合成字段是编译器创建的字段,它将局部内部类链接到块的局部变量或引用类型参数。编译器合成某些隐藏字段和方法以实现名称的作用域。除非另有说明,否则这些字段是私有的,或者它们最多在包范围内。您可以在中获得更多信息和信息

源代码中未出现的类成员必须使用合成属性进行标记,否则必须设置其ACC_合成标志。此要求的唯一例外是编译器生成的方法,这些方法不被视为实现工件,即表示Java编程语言默认构造函数的实例初始化方法(§2.9)、类初始化方法(§2.9)以及Enum.values()和Enum.valueOf()方法


“合成字段是编译器创建的字段,它将局部内部类链接到块的局部变量或引用类型参数”…我不理解这一行的含义。一个代码示例会有所帮助。你可以查看这个代码示例。所以,如果我要通过字段上的反射创建克隆,我必须跳过它们,对吗?@AquariusPower是的,你应该这样做