【问题标题】:What are synthetic fields in Java? [duplicate]Java 中的合成字段是什么? [复制]
【发布时间】:2013-06-09 00:03:13
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

  • “合成字段是编译器创建的字段,它将局部内部类链接到块的局部变量或引用类型参数”...我不明白这一行的含义。一个代码示例会有所帮助。
  • 您可以查看此blog 以获取代码示例。
  • 所以如果我要通过字段的反射创建克隆,我必须跳过它们对吗?
  • @AquariusPower 是的,你应该
猜你喜欢
  • 2012-03-31
  • 2011-02-18
  • 2011-04-07
  • 1970-01-01
  • 2011-04-17
  • 2018-08-11
  • 2011-02-22
  • 1970-01-01
  • 2016-04-24
相关资源
最近更新 更多