我查询数据库并将其映射到类
MyDataClass myDataClass = myDataDao.findMyDataByAccountNumber(accountNumber);
我将它映射到其他这样的班级
MyOtherDataclass myOtherDataClass = new MyOtherDataClass();
myOtherDataClass.setBirthDate(myDataClass.getBirthDate().toString);
我知道myDataClass.getBirthDate()
为空,因为数据库中的birthdate
值为空。
如果我向数据库中的birthdate
插入值,那么它正常,一切正常。但是,如果它没有值,那么我想将其设置为json中的null而不是抛出java.lang.NullPointerException: null
我希望这样的结果在json
{
AccountNumber: "12313",
BlaBla: "blabla",
BirthDate: null,
}
================================================ ==========================
发现了问题。
我在.toString()
上使用myOtherDataClass.getBirthDate().toString()
,所以它抛出了空指针。因为myDataClass
中的birthDate为空。抱歉,这是我的坏事。
使用
解决myOtherDataClass.setBirthDate(myDataClass.getBirthDate() != null ? myDataClass.getBirthDate().toString() : null);
答案 0 :(得分:1)
我们对您的课程(myDataClass
和myOtherDataClass
)没有任何了解,因此很难确定为什么getter会引发错误。不过,我只是在这里猜测,可能是您正在寻找一种快速的班轮来处理空值,对此的一个答案是:
myOtherDataClass.setName((myDataClass.getName() != null) ? myDataClass.getName() : "somethingelse");
此ternary construct可用于呈现任何您想要的“东西”,包括null(我也不知道您是如何生成json的,所以我也不知道您如何处理一个空值。)
如果您希望看到一个完整的示例,这里是一个带有两个实例(一个已命名,一个未命名)的假DAO。
import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class MyDataClass {
String accountNumber;
String blaBla;
String name;
public MyDataClass(String accountNumber, String blaBla) {
this.accountNumber = accountNumber;
this.blaBla = blaBla;
}
public MyDataClass(String accountNumber, String blaBla, String name) {
this.accountNumber = accountNumber;
this.blaBla = blaBla;
this.name = name;
}
public String getName() {
return this.name;
}
}
class MyOtherDataClass {
String name;
String foo;
public MyOtherDataClass() {
this.foo = "bar";
}
public void setName(String name) {
this.name = name;
}
public void printIt() {
System.out.println("Name: "+ name );
System.out.println("Foo: " + foo );
System.out.println("\n");
}
}
class Main {
public static void main(String[] args) {
MyDataClass myDataClassHasNoName = new MyDataClass("12345","BlaBla");
MyDataClass myDataClassHasName = new MyDataClass("12346","BlaBla","Name");
MyOtherDataClass myOtherDataClassHasName = new MyOtherDataClass();
MyOtherDataClass myOtherDataClassHasNoName = new MyOtherDataClass();
myOtherDataClassHasName.setName((myDataClassHasName.getName() != null) ? myDataClassHasName.getName() : "somethingelse");
myOtherDataClassHasNoName.setName((myDataClassHasNoName.getName() != null) ? myDataClassHasNoName.getName() : "somethingelse");
myOtherDataClassHasName.printIt();
myOtherDataClassHasNoName.printIt();
}
}
这里是链接on mycompiler