如何修复泛型类型参数的运行时“空指针异常”

时间:2019-04-23 12:48:42

标签: java

我有两个不同的类,每个类中都有一个方法。类是“ 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)

1 个答案:

答案 0 :(得分:0)

privilageBox.getValue()可以返回null的值,如果您尝试对空对象使用toString(),则Java会抛出NullPointerException

您可以使用它永远不会有一个空值:

 privilageBox.getValue() != null ? privilageBox.getValue().toString() : "other..."

“其他...”是默认权限(您可以放置​​“员工”)