我在下面得到一个nullPointerException。有人可以解释原因吗?谢谢!
private SpatialPooler spatialPooler;
private Region region;
private Column column33;
public void setUp()
{
this.spatialPooler = new SpatialPooler();
this.region = new Region(30, 40, 6, 8, 1.0f, 1, 1);
this.column33 = this.region.getColumn(3, 3);
}
public void addActiveColumn(Column activeColumn)
{
this.activeColumns.add(activeColumn); // nullPointerException here!
}
public Column getActiveColumn(int x, int y)
{
for (Column activeColumn : this.activeColumns)
{
if (activeColumn.getX() == x && activeColumn.getY() == y)
{
return activeColumn;
}
}
return null;
}
// in a test class that is in the same package.
public void testGetAndAddActiveColumn()
{
this.spatialPooler.addActiveColumn(this.column33);
assertNull(this.spatialPooler.getActiveColumn(3, 3));
this.column33.setActiveState(true);
assertEquals(this.column33, this.spatialPooler.getActiveColumn(3, 3));
}
答案 0 :(得分:1)
您的代码未在任何地方显示activeColumns
被初始化。
如果它是 Column 对象的列表,您应该将此代码放在某处:
List<Column> activeColumns = new ArrayList<Column>();
您可以将它放在构造函数中,或者在声明activeColumns
时使用上面的代码
答案 1 :(得分:0)
NullPointerException
s主要是因为您使用的是未初始化的变量。我假设activeColumns尚未初始化。它不是成员,所以它不会在该函数内部具有范围。您可以通过几种方式修复它
1)一个局部变量
2)将activeColumns添加为成员
3)改变函数的行为