java - Java 特定的 NullPointerException

标签 java object nullpointerexception

我有一个简短的问题,请告诉我为什么第一个示例不起作用而第二个示例起作用。 示例之前的代码:

Tiles[] myTiles = new Tile[23];
number = 1;

第一个例子:

for(Tile tile : this.myTiles) {
    if (number != this.myTiles.length) {
        tile = new Tile(number, getResources().getColor(R.color.puzzle_default));
        number++;
    }
}

第二个例子:

for(Tile tile : this.myTiles) {
    if (number != this.myTiles.length){
        this.myTiles[number-1] = new Tile(number, getResources().getColor(R.color.puzzle_default));
        number++;
    }
}

如果我在类中的其他方法中使用下面的代码

this.myTiles[0].getNumber(); 

这是 NullPointerException。
但对于第二个示例来说,效果很好。

我真的不知道为什么。感谢您的回复

最佳答案

第一个循环创建每个对象的副本,相当于

for (int i=0; i < myTiles.length; i++) {
   Tile tile;
   ...
   tile = new Tile(...); // set local reference only
}

由于对象数组中的元素默认为 null,因此这些元素在循环范围之外将保持未分配状态。 myTiles 的原始元素保留其默认 null

关于java - Java 特定的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21838871/

相关文章:

android - 无法使用 RoboGuice 将 View 注入(inject)自定义类

java - 用于实现 DBMS 的数组/列表 (Java)

java - 适配器中的 viewHolder.getAdapterPosition() 返回 -1 位置并导致 IndexOutOfBoundException

java - 使用 Json 在 Android 客户端和 WCF 服务之间传递 DateTime 作为参数

java - Spring RestTemplate GET 带参数

java - 存储 String 对象的最压缩方式

Javascript 特异性(仅响应单击的项目)

java - 在 Java 中创建对象的正确方法是什么?

java - 是什么导致我的java代码的这部分出现空指针异常?

java - 什么是NullPointerException,我该如何解决?