情况如下:
student.studentsPhone.studentsAccount.topUp(xxx)
student是一个对象,其方法为studentsPhone,它返回Phone类型的变量,phone对象有一个方法studentsAccount,它返回一个最终具有所需方法的Account类型的变量。
所以我的问题是如果我有一个学生对象而没有手机,我会得到一个空指针异常。有没有办法切断我们想要的线? 请记住,我不想在主类中实例化所有内容。我将实例化Student类。
我虽然有几种方法
将方法向上移动,但其他对象确实没有任何用处
在studentsPhone方法中,我说如果(Phone == null) return;
但它不是空的,而且还有其他方法在studentPhone之后
答案 0 :(得分:0)
您可以使用三元运算符,例如:
String result = student != null ? (student.studentPhone != null ? (student.studentPhone.studentsAccount != null ? student.studentPhone.studentsAccount.topUp(xxx) :"return"): "return") : "return"
或者喜欢:
boolean isNotNull = student != null ? (student.studentPhone != null ? (student.studentPhone.studentsAccount != null ? true : false): false) : false;
if(isNotNull){
student.studentPhone.studentsAccount.topUp(xxx);
}
答案 1 :(得分:0)
如果没有手机,您可以抛出自己的运行时异常类型。将代码包装在try / catch块中,捕获自己的异常,然后继续执行其余的功能
void doSomeThing() {
Phone getStudentPhone() {
if(phone == null) {
throw new noPhoneException();
}
return phone;
}
}
try {
student.getStudentPhone().studentsAccount.topUp(xxx);
} catch(noPhoneException e) {
// say something about no phone existing
}