java - 如何避免代码中出现 java.lang.NullPointerException?

标签 java nullpointerexception

我问了一个关于生命游戏实现代码的问题。建议的解决方案解决了我的问题,但又产生了一个新问题。
现在,如果我尝试调用 getCell() 方法,我会得到 java.lang.NullPointerException。 如何避免这种异常?

链接到我之前的问题以及我使用的相应代码和解决方案代码: How can I access the Cell Array in my getCell method? (Java)

或者如果您只想要代码:

public class GameMap {
    private Cell[][] cellArray;
    
    private static Cell[][] buildCellArray(int width, int height){
        Cell[][] cellArray = new Cell[width][height];
        int i;
        int j;
        for(i = 0; i < width; i++) {
            for(j = 0; j < height; j++) {
                cellArray[i][j] = new Cell();
            }
        }
        return cellArray;
    }
    
    public GameMap(int sizeX, int sizeY) {
        buildCellArray(sizeX, sizeY);
    }
    
    
    public Cell getCell(int posX, int posY){
        return cellArray[posX][posY];
    }
}

最佳答案

buildCellArray(sizeX, sizeY);

这确实构建了一个新数组并返回它,但您没有将其分配给它需要转到的字段。您只需丢弃结果,字段保持原来的样子 (null)。

你需要做

cellArray = buildCellArray(sizeX, sizeY);

您有一个与静态方法中的字段同名的局部变量,这有点令人困惑。但它们完全无关。尽量避免这种阴影。您可以将名称更改为例如

private static Cell[][] buildCellArray(int width, int height){
    Cell[][] newCellArray = new Cell[width][height];

关于java - 如何避免代码中出现 java.lang.NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63095257/

相关文章:

用于从数据库生成 Postgres SQL 脚本的 Java 库

java - 使用 JSON 插入排序时遇到问题

java - Java 数组的 NullPointerException - 8 个皇后

java - Android Cursor NPE dumpCursorToString 返回值

android - 尝试在空对象引用上调用虚拟方法 'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()'

java - 两个线程可以同时访问一个同步方法吗?

java - “java dynamic web project”和 “Gradle project”有什么区别

java - 如果从未使用过,声明中的泛型类型如何真正影响方法?

java - 在向 DAO 类发送日期时获取类转换异常

java - 处理 Web 服务中的空指针异常