JavaFX的CheckBox数据输出有问题

写个复选框,要求选择某个框,就提示选了什么,例如有1.2.3.4个选择,选了1就提示,“你选择了:1”,又选了2,则再次提示“你选择了1,2”。整体的都写出来了,也可以运行,但是问题出在选择这,我一选其中一个,就报错。我们用的软件是netbeans,jdk11求解答

//App class

public class App extends Application {

    Car extraOptions;

    @Override
    public void start(Stage primaryStage) {
        Label lblExtraOption = new Label("Extra options: ");

        CheckBox cbk1 = new CheckBox("Rear-view camera");
        CheckBox cbk2 = new CheckBox("GPS");
        CheckBox cbk3 = new CheckBox("Satellite navigation");
        CheckBox cbk4 = new CheckBox("Airbags");
        CheckBox cbk5 = new CheckBox("Extra tinting");

        HashSet<String> check = new HashSet<String>();
        EventHandler<ActionEvent> Check = (var event) -> {
            if (cbk1.isSelected()) {
                check.add("Rear-view camera");
            } else {
                check.remove("Rear-view camera");
            }
            if (cbk2.isSelected()) {
                check.add("GPS");
            } else {
                check.remove("GPS");
            }
            if (cbk3.isSelected()) {
                check.add("Satellite navigation");
            } else {
                check.remove("Satellite navigation");
            }
            if (cbk4.isSelected()) {
                check.add("Airbags");
            } else {
                check.remove("Airbags");
            }
            if (cbk5.isSelected()) {
                check.add("Extra tinting");
            } else {
                check.remove("Extra tinting");
            }
            extraOptions.setExtraOptions(check);
            System.out.println("You chose extra options: "
                    + extraOptions.getExtraOptions());
        };
        cbk1.setOnAction(Check);
        cbk2.setOnAction(Check);
        cbk3.setOnAction(Check);
        cbk4.setOnAction(Check);
        cbk5.setOnAction(Check);

        HBox HB7 = new HBox();
        HB7.setSpacing(30);
        HB7.setPadding(new Insets(10));
        HB7.getChildren().addAll(cbk1, cbk2, cbk3, cbk4, cbk5);
        HBox HB8 = new HBox();
        HB8.setSpacing(30);
        HB8.setPadding(new Insets(10));
        HB8.getChildren().addAll(cbk2, cbk4, cbk5);

        VBox vbox = new VBox();
        vbox.setPadding(new Insets(10));
        vbox.getChildren().addAll(lblExtraOption, HB7, HB8);

        Scene scene = new Scene(vbox, 500, 500);
        primaryStage.setTitle("demo");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

}

//Car class
public class Car {
   // check boxes
    private HashSet<String> extraOptions = new HashSet();

    public Car() {
    }

  
    public HashSet<String> getExtraOptions() {
        return extraOptions;
    }

    public void setExtraOptions(HashSet<String> extraOptions) {
        this.extraOptions = extraOptions;
    }
}

//main
public class Main {
    public static void main(String[] args) {
        launch(App.class, args);
    }
}

选择后出错的提示

Picked up _JAVA_OPTIONS: -Xmx1024M
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
    at demo.CheckBox.App.lambda$start$0(App.java:59)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Node.fireEvent(Node.java:8890)
    at javafx.scene.control.CheckBox.fire(CheckBox.java:240)
    at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:206)
    at com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3862)
    at javafx.scene.Scene.processMouseEvent(Scene.java:1849)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2590)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:409)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:299)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:447)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:446)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:556)
    at com.sun.glass.ui.View.notifyMouse(View.java:942)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    at java.base/java.lang.Thread.run(Thread.java:829)

把以下对象的定义放到函数外面,必须是成员变量


CheckBox cbk1 = new CheckBox("Rear-view camera");
        CheckBox cbk2 = new CheckBox("GPS");
        CheckBox cbk3 = new CheckBox("Satellite navigation");
        CheckBox cbk4 = new CheckBox("Airbags");
        CheckBox cbk5 = new CheckBox("Extra tinting");