Javafx(Node)getUserDate()或getProperties()返回一个非null值并抛出NullPointerException

时间:2014-06-28 10:35:52

标签: javafx

以下是设置用户数据的代码。

   FXMLLoader loader = new FXMLLoader(getClass().getResource(page.toString()));
   Parent node = (Parent) loader.load();
   loader.getController().setParent(handler);
   controllers.put(page.name(), loader.getController());
   controller = controllers.get(page.name());
   node.setUserData(page.name());
   node.getProperties().put("page", page.name());

变量页面是一个Enum对象,我使用名称'page.name()'作为用户数据

以下是获取用户数据的代码:

 while (iterator.hasNext()) {
        Node node = iterator.next();
        String name = node.getProperties().get("page").toString();
        System.out.println(name);
        ....
    }

现在发生了什么: System.out.println(name); 正确打印出用户数据, 然后我得到 NullPointException 指向

String name = node.getProperties().get("page").toString();

点是 System.out.println(name); ,用于打印用户日期 打印正确。

这里发生了什么?

1 个答案:

答案 0 :(得分:0)

尝试将其分解。如果不将多个方法调用链接在一起,代码通常更容易阅读。

Node node = iterator.next();
ObservableMap<Object, Object> properties = node.getProperties(); // Swap Object with whatever subclass it is supposed to return
Object nameProperty = properties.get("page"); // Same here
String name = nameProperty.toString();

然后查看哪一行返回空指针异常并尝试搜索其背后的原因。很可能getProperties()或get(“page”)实际上返回一个空值。