0

我不知道为什么,但这行代码给出了NullPointerException. 我搜索了创建用户 obj 的数组。在Java中,再次但是,我找不到任何问题。

private State[] states;
.    
.
.
private void initializeStates( )
        {
            states = new State[ stateNames.length ]; // Throws NullPointerException

        for( int i = 0; i < stateNames.length; i++ )
        {
            states[i] = new State();
            states[i].setName( stateNames[i] );
            states[i].setColor( stateColors.getColor() );
        }
    } // End of initializeStates()

这是课程:

public class State
{
    private String stateName;
    private String color;
    private boolean isStartState;
    private boolean isFinalState;

        State()
        {
            stateName = new String(); // Can this line cause nullPtrException?
            color = new String(); // Can this line cause nullPtrException?
            isStartState = false;
            isFinalState = false;
        }

        public void setName( String name ){ stateName = name; }
        public void setColor( String clr ) {   color = clr; }
        public void makeStart( ) {  isStartState = true; }
        public void makeFinal( ) {  isFinalState = true; }

    }
4

1 回答 1

5

如果此行抛出异常:

states = new State[ stateNames.length ]; // Throws NullPointerException

...那么问题stateNamesnull。你没有像其他任何代码一样做到这一点。

您还没有显示stateNames声明或初始化的位置,但这是您接下来应该查看的位置。

顺便说一句,这个:

stateName = new String();

...无缘无故地效率低下。只需使用空字符串文字:

stateName = "";

(或者更好的是,将适当的初始值作为构造函数参数。)

于 2013-04-24T22:36:22.270 回答