如何告诉Java的一个变量不可能为空?

费边罗林:

我有一个程序,基本上是这样的:

boolean[] stuffNThings;
int state=1;
for(String string:list){
   switch(state){
      case 1:
         if(/*condition*/){
            // foo
            break;
         }else{
            stuffNThings=new boolean[/*size*/];
            state=2;
         }
      // intentional fallthrough
      case 2:
         // bar
         stuffNThings[0]=true;
   }
}

如你,一个人,可以看到,案例2时以前有一个状态1和它初始化数组后切换到状态2只没发生过。但是Eclipse和Java编译器不看到这一点,因为它看起来像很复杂的逻辑给他们。因此,Eclipse的抱怨:

局部变量stuffNThings可能尚未初始化“。

如果我变“ boolean[] stuffNThings;”到“ boolean[] stuffNThings=null;”,切换到这个错误信息:

潜在的空指针访问:变量stuffNThings可能会在这个位置空。

我还不能在顶部初始化它,这是因为数组的大小在状态1中的最后循环之后才确定的。

Java会把该阵列可以为空,但我知道这不可能。是否有某种方式来告诉Java的这种?还是我肯定被迫把无用的null周围检查?并称,使代码难以理解,因为它看起来像可能存在的价值实际上并没有得到设定的情况下true

费边罗林:

只是想不管Eclipse的抱怨来执行代码后,我发现它确实运行没有问题。因此很明显,这只是一个警告设置为“错误”的水平,尽管不是关键的。
有一个“配置问题的严重性”按钮,所以我设置的“潜在的空指针访问”到“警告”的严重程度(和相应调整其他一些级别)。现在Eclipse的只是将其标记为警告,而不会抱怨执行代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Terraform中定义一个列表,该列表根据变量可能为空?

来自分类Dev

如何告诉 Django 模型只有一个或其他字段不能为空?

来自分类Dev

不可能删除一个ppa

来自分类Dev

智能投射到“位图!” 是不可能的,因为 'textBitmap' 是一个局部变量,由变化的闭包捕获

来自分类Java

它是不可能有一个@RequestParam作为一个列表?

来自分类Dev

是否不可能为一个属性具有多个字段的文档建立索引,其中一个字段是具有上下文的完成类型?

来自分类Dev

R:不可能完成任务吗?如何将“纽约”分配给一个县

来自分类Dev

不可能为 Android 构建 Ionic

来自分类Dev

如何告诉编译器可以有一个未初始化的不可为空的属性

来自分类Dev

如何告诉打字稿值是一个空对象?

来自分类Dev

不可能将一个框垂直居中成一列

来自分类Dev

要求一个可能为空的泛型不为空

来自分类Dev

Javascript:测试至少一个非空数组(如果其中一个数组可能为空)

来自分类Dev

计算两个日期之间的天数(一个日期可能为空)Google Spreadsheets

来自分类Java

为什么我不可能写入到一个文件?

来自分类Dev

为什么在 VB.NET 中不可能声明一个 NotOverridable 方法?

来自分类Dev

为什么不可能实例化一个原子对?

来自分类Dev

找到一个完美的匹配或证明这是不可能的

来自分类Dev

为什么不可能实现“无限”的一个时间片算法?

来自分类Dev

不可能在另一个组件的左侧获得一个 Angular 组件

来自分类Dev

如何将这两个独立的程序集成到一个程序中?或者这是不可能的?

来自分类Dev

智慧型转换是不可能的,因为...是一个可变的属性,本来可能已经改变了

来自分类Java

如何在Java中创建一个空的不可变Scala映射?

来自分类Dev

是否不可能在后台有一个每 24 小时被调用一次的代码?

来自分类Dev

不可能有一个带有泛型的基于数组的Queue吗?

来自分类Java

聪明地投射到“ ObserverT !!” 这是不可能的,因为“ item.get()”是一个复杂的表达式

来自分类Dev

通过CSS将类似类的相邻组样式化为一个块?明显还是不可能?

来自分类Dev

苹果(企业)开发人员计划:多个团队的同一个团队代理似乎不可能

来自分类Dev

Excel一个单元格到多个公式(我意识到这不可能)

Related 相关文章

  1. 1

    如何在Terraform中定义一个列表,该列表根据变量可能为空?

  2. 2

    如何告诉 Django 模型只有一个或其他字段不能为空?

  3. 3

    不可能删除一个ppa

  4. 4

    智能投射到“位图!” 是不可能的,因为 'textBitmap' 是一个局部变量,由变化的闭包捕获

  5. 5

    它是不可能有一个@RequestParam作为一个列表?

  6. 6

    是否不可能为一个属性具有多个字段的文档建立索引,其中一个字段是具有上下文的完成类型?

  7. 7

    R:不可能完成任务吗?如何将“纽约”分配给一个县

  8. 8

    不可能为 Android 构建 Ionic

  9. 9

    如何告诉编译器可以有一个未初始化的不可为空的属性

  10. 10

    如何告诉打字稿值是一个空对象?

  11. 11

    不可能将一个框垂直居中成一列

  12. 12

    要求一个可能为空的泛型不为空

  13. 13

    Javascript:测试至少一个非空数组(如果其中一个数组可能为空)

  14. 14

    计算两个日期之间的天数(一个日期可能为空)Google Spreadsheets

  15. 15

    为什么我不可能写入到一个文件?

  16. 16

    为什么在 VB.NET 中不可能声明一个 NotOverridable 方法?

  17. 17

    为什么不可能实例化一个原子对?

  18. 18

    找到一个完美的匹配或证明这是不可能的

  19. 19

    为什么不可能实现“无限”的一个时间片算法?

  20. 20

    不可能在另一个组件的左侧获得一个 Angular 组件

  21. 21

    如何将这两个独立的程序集成到一个程序中?或者这是不可能的?

  22. 22

    智慧型转换是不可能的,因为...是一个可变的属性,本来可能已经改变了

  23. 23

    如何在Java中创建一个空的不可变Scala映射?

  24. 24

    是否不可能在后台有一个每 24 小时被调用一次的代码?

  25. 25

    不可能有一个带有泛型的基于数组的Queue吗?

  26. 26

    聪明地投射到“ ObserverT !!” 这是不可能的,因为“ item.get()”是一个复杂的表达式

  27. 27

    通过CSS将类似类的相邻组样式化为一个块?明显还是不可能?

  28. 28

    苹果(企业)开发人员计划:多个团队的同一个团队代理似乎不可能

  29. 29

    Excel一个单元格到多个公式(我意识到这不可能)

热门标签

归档