我认为我的_holder
和/或_gooseAction
是null
....以下是_holder
和_gooseAction
实例化的相关代码/类:
public class Goose {
//Goose class
private ActionHolder _holder;
private gooseAction _gooseAction;
public Goose (JPanel container, GooseAction action, ActionHolder holder) {
super(container);
_holder = holder;
_gooseAction = _holder.getAction();
_gooseAction = action;
}
public void react() {
_gooseAction.stop();
_holder.getAction();
_gooseAction = _holder.getAction();
_gooseAction.setObjective(this);
_gooseAction.start();
}
public class ControlPanel {
//top level class
public ControlPanel() {
super();
_holder = new ActionHolder(_moveAction);
_drawingPanel = new DrawingPanel(_holder);
_gooseAction = new GooseAction();
_doNothing = new StopBehavior();
_kingGoose = new FollowBehavior(_kingGoose);
}
private GooseAction _gooseAction;
private ActionHolder _holder;
public class ActionHolder {
private GooseAction _GooseAction;
public ActionHolder(GooseAction Action) {
_gooseAction = Action;
}
public void setAction(GooseAction GooseAction) {
_gooseAction = GooseAction;
}
public GooseAction getAction() {
return _gooseAction.copy();
}
}
public class ActionButton extends JButton {
public ActionButton(String string, boolean b, GooseAction action, ActionHolder holder) {
super(string, b);
_holder = holder;
_gooseAction = action;
}
}
private class ActionListener implements ChangeListener {
public ActionListener(GooseAction action) {
}
public void stateChanged(ChangeEvent e) {
_holder.setAction(_gooseAction);
}
}
答案 0 :(得分:4)
if(_holder == null) System.out.println("_holder is null");
if(_gooseAction == null) System.out.println("_gooseAction is null");