我在 if 语句之外声明我的对象,但在其中初始化它们。后来我尝试使用它们,但它不允许这样做,因为它们尚未初始化。 if 语句的结构使得它们都将在使用对象之前执行,因此对象将被保证初始化,但 java 不允许这样做。有办法解决这个问题吗?
最佳答案
如果您知道所有路径最终都会初始化它们,但编译器不会,您可以将它们初始化为 null
或 0
或 false
(正如 ajb 提醒的那样)——或者你在声明它们时定义的其他特殊初始值。然后它们就有一个具体的初始值。
如果在您使用变量时该变量仍然为 null
(或者无论它的初始值是什么)(在对象的情况下可能由 NPE 证明),那么您就知道出了问题;您还可以稍后使用断言自行记录您的假设。
您应该发布您的代码,以便我们为您提供更好的建议;编译器在路径分析方面相对智能,尽管它当然不能处理依赖外部输入或假定前提条件和不变量的情况。不过,您总是有可能忽略了某些内容(也许异常或意外情况会导致该值未初始化的路径 - 这很好,您只需确保它已初始化)。
关于java - 使用循环内初始化的对象/变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19780753/