我有两个不同的类,每个类中都有一个方法。类是“ DBConnect”和“ Controller”。由于我尝试构建fx应用程序,因此有一个名为'privilageBox'的组合框和一个名为'privilageList'的泛型类型供您选择(在Controller类内部)。
ObservableList<String> privilageList = FXCollections.observableArrayList("Admin","Employee");
在同一类中有一个名为“登录”的函数,并且其中包含一些编码。我也有一个if语句,在需求部分中我想做的是尝试调用位于DBConnect类内部的'checkUser'方法并设置其参数。
DBConnect lg = new DBConnect();
if(lg.checkUser(textField1.getText(),passwordField1.getText(),(privilageBox.getValue()).toString()))
这是我得到NullPointerException的地方。我将参数设置错误,解决方案用光了。
这是DBConnect类中的checkUser函数的参数:
public boolean checkUser(String username, String password,String privilage) throws SQLException
我试图按如下所示设置'checkUser'和if语句在'login'中的参数:
public boolean checkUser(String username, String password,ObservableList privilage) throws SQLException
if(lg.checkUser(textField1.getText(),passwordField1.getText(),privilageList.toString))
它也不起作用。顺便说一句,这是一个运行时错误。我在编译时没有错误。错误消息(丢弃不必要的部分):
Caused by: java.lang.NullPointerException
at sample.DBConnect.checkUser(DBConnect.java:70)
at sample.Controller.login(Controller.java:44)
答案 0 :(得分:0)
privilageBox.getValue()
可以返回null
的值,如果您尝试对空对象使用toString()
,则Java会抛出NullPointerException
。
您可以使用它永远不会有一个空值:
privilageBox.getValue() != null ? privilageBox.getValue().toString() : "other..."
“其他...”是默认权限(您可以放置“员工”)