java - 使用循环内初始化的对象/变量?

标签 java loops initialization

我在 if 语句之外声明我的对象,但在其中初始化它们。后来我尝试使用它们,但它不允许这样做,因为它们尚未初始化。 if 语句的结构使得它们都将在使用对象之前执行,因此对象将被保证初始化,但 java 不允许这样做。有办法解决这个问题吗?

最佳答案

如果您知道所有路径最终都会初始化它们,但编译器不会,您可以将它们初始化为 null0false (正如 ajb 提醒的那样)——或者你在声明它们时定义的其他特殊初始值。然后它们就有一个具体的初始值。

如果在您使用变量时该变量仍然为 null (或者无论它的初始值是什么)(在对象的情况下可能由 NPE 证明),那么您就知道出了问题;您还可以稍后使用断言自行记录您的假设。

您应该发布您的代码,以便我们为您提供更好的建议;编译器在路径分析方面相对智能,尽管它当然不能处理依赖外部输入或假定前提条件和不变量的情况。不过,您总是有可能忽略了某些内容(也许异常或意外情况会导致该值未初始化的路径 - 这很好,您只需确保它已初始化)。

关于java - 使用循环内初始化的对象/变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19780753/

相关文章:

java - CORS 请求错误 Tomcat 7 & Java Servlet

java - 使用文字初始化类对象

c++ - 在类构造函数中初始化自定义结构对象的正确方法

java - 将 .swf 文件嵌入到我的 Jframe 中

java - 如何运行用 cucumber-jvm 和 gradle 标签过滤的测试?

javascript - 使用循环计算数组中新推送的数据

java - 复杂循环帮助。 java

r - 在 R 中的数据帧上循环相同的函数

c++ - 使用已删除的复制构造函数和初始化列表重载调用类定义中的成员构造函数

java - Kafka : Single consumer group, 无分区和多个主题