Java 安卓,为什么说var为null

Java 安卓,为什么说var为null,java,android,nullpointerexception,Java,Android,Nullpointerexception,我有一个扩展类,在类中有一个var,我通过值定义它,但说它是null public class CalendarCell extends TextView { public static final String TAG = "CalendarCell"; protected ArrayList<Integer> cellStates = new ArrayList<>(); public CalendarCell(Context context)

我有一个扩展类,在类中有一个var,我通过值定义它,但说它是null

public class CalendarCell extends TextView
{

    public static final String TAG = "CalendarCell";

    protected ArrayList<Integer> cellStates = new ArrayList<>();

public CalendarCell(Context context)
{
    super(context);
}

public CalendarCell(Context context, AttributeSet attrs)
{
    super(context, attrs);
}

public CalendarCell(Context context, AttributeSet attrs, int defStyle)
{
    super(context, attrs, defStyle);
}

@Override
protected int[] onCreateDrawableState(int states)
{
    int newStatesSize = cellStates.size();  // Error here (null)
    if (newStatesSize > 0)
    {

        ...
    }
    else
    {
        return super.onCreateDrawableState(states);
    }
}

public void resetStates()
{
    cellStates.clear();
}

public void addState(int state)
{
    if(!cellStates.contains(state))
        cellStates.add(state);
    }
}

使
cellStates
final如下:

protected final ArrayList<Integer> cellStates = new ArrayList<>();
protectedfinal ArrayList cellStates=new ArrayList();

是否尝试将cellState设置为静态?请编辑并显示异常的完整堆栈跟踪。我想知道这是否真的是从超类构造函数调用的。我添加了final,但得到了错误so@ali这几乎是不可能的,最后一个字段不能更改,您正在声明中初始化它。代码中一定有其他东西不起作用。当我添加blow代码时,它解决了问题。如果(cellStates==null)cellStates=newarraylist();但是为了提高速度,我想去掉这个pice@ali你一定错过了什么。尝试调试代码并检查字段的值分配。
protected final ArrayList<Integer> cellStates = new ArrayList<>();