Java 构造函数中出现 NullPointerException

Java NullPointerException in constructor

我用 public 属性定义了一个 class。

但是,在构造函数中初始化值时,我得到一个 NullPointerException

这是我的代码:

class CacheBlock 
{
    public byte[] data;
    public int frame;
    public boolean ref;
}

public class Cache
{
    private CacheBlock[] blocks;

    public Cache(int blockSize, int cacheBlocks)
    {
        blocks = new CacheBlock[10];    
        blocks[0].data = new byte[blockSize]; //line that causes exception      
    }   
}  
blocks = new CacheBlock[10];

这一行,你只分配内存,不初始化。

你应该添加

blocks[0]=new CacheBlock();

在可疑线上。

问题所在:

blocks = new CacheBlock[10];

此处 block 数组已初始化,但索引 0 处没有 CacheBlock 对象,因此当它在下一行访问时,有一个 NPE。

您需要创建 CacheBlock 个实例并将其添加到 block 数组。

例如:

blocks[0] = new CacheBlock();

等等。