LinkedStack在java中推送克隆对象的问题

时间:2017-03-21 19:55:44

标签: java

当我运行此代码时,tmp不为null,可以打印模型的信息

但是当我把它推入linkedStack时,它会告诉我NullpointerException

    
    private LinkedStack<GameModel> modelStack;
    
    protected GameModel clone()  {
        try{
            GameModel tmp;
            tmp= (GameModel)super.clone();
            // tmp.dotSet=dotSet;
            // tmp.numberOfSteps=numberOfSteps;
            //tmp.numberOfSteps=numberOfSteps.clone();
            System.out.println(tmp);
            return tmp;
        }catch (CloneNotSupportedException e){
            throw new AssertionError();
        }      
    }
    
    private void createModelStack(GameModel model){
        GameModel tmp;
        tmp=model.clone();
        System.out.println(tmp);
        System.out.println(tmp==null);
        modelStack.push(tmp);
    }

1 个答案:

答案 0 :(得分:0)

private LinkedStack<GameModel> modelStack

未初始化modelStack。这是什么&null;而不是tmp。

请确保您实例化它:

private LinkedStack<GameModel> modelStack = new LinkedStack<>();

或者如果你想要,你可以在createModelStack创建它,这可能更有意义

另一件事是,我不熟悉LinkedStack,它似乎不是一个java实现。你自己实现了吗?也可能会从那里抛出一个错误(如果在实际代码中你实例化了modelStack并忘了在这里包含它)