构造函数中的Java NullPointerException

时间:2015-02-25 06:07:12

标签: java struct nullpointerexception

我定义了一个具有公共属性的类。

但是,在构造函数中初始化值时,我得到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      
    }   
}  

2 个答案:

答案 0 :(得分:1)

这就是问题所在:

blocks = new CacheBlock[10];

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

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

例如:

blocks[0] = new CacheBlock();

等等。

答案 1 :(得分:-1)

blocks = new CacheBlock[10];

这一行,你只分配内存,但没有初始化它。

你应该添加

blocks[0]=new CacheBlock();

在可疑线上方。