什么是Java中的合成字段?

时间:2013-06-12 18:39:29

标签: java compiler-construction field inner-classes synthetic

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

1 个答案:

答案 0 :(得分:17)

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

中获取更多信息JLS
  

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