我定义了一个具有公共属性的类。
但是,在构造函数中初始化值时,我得到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
}
}
答案 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();
在可疑线上方。