【问题标题】:Initializing final fields - Java初始化最终字段 - Java
【发布时间】:2010-08-04 10:33:32
【问题描述】:

我想知道当我编译一个包含 final 字段的类时,是否有一个编译器选项可以让我删除/修复出现的错误(“变量 X 可能没有被初始化”)。或者更好的办法是将 final 字段初始化为默认的 java 值。

谢谢,

ExtremeCoder

【问题讨论】:

  • 这样就违背了 final 字段的目的,不是吗?
  • 我这样做是因为我将一个 XML 文档解组为 1000ds 个对象。因此无论如何都会初始化这些字段...

标签: java compiler-construction field default-value final


【解决方案1】:

解决错误的方法是修复代码:确保显式初始化值。我不相信有任何选择可以忽略错误。

一种模仿的方法是将构造函数的局部变量设置为 Java 默认值,然后在构造函数的过程中替换它们。在构造函数的最后,将字段值设置为局部变量的值。

请注意,如果您的构造函数中有很多代码,您可能需要考虑重构...

【讨论】:

  • 谢谢,我想我可以试试你的第二个想法。问题是我有超过 1000 个生成的源文件,我不想查看每个源文件。也许我应该补充一点,我实际上是在使用 JAXB 来生成这些,并且我正在删除 setter 方法并使字段成为最终的。现在这意味着字段正在由解组过程初始化(这就是为什么我想一起摆脱错误,因为它无论如何都是微不足道的......不过谢谢。
  • 为什么?你为什么要创造所有这些额外的工作?规则 #1:不理会生成的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
相关资源
最近更新 更多