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();
等等。
我用 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();
等等。