以下是设置用户数据的代码。
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); ,用于打印用户日期 打印正确。
这里发生了什么?
答案 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”)实际上返回一个空值。