你如何打破在不同对象中调用的嵌套方法?

时间:2016-12-01 20:14:39

标签: java

情况如下:

student.studentsPhone.studentsAccount.topUp(xxx)

student是一个对象,其方法为studentsPhone,它返回Phone类型的变量,phone对象有一个方法studentsAccount,它返回一个最终具有所需方法的Account类型的变量。

所以我的问题是如果我有一个学生对象而没有手机,我会得到一个空指针异常。有没有办法切断我们想要的线? 请记住,我不想在主类中实例化所有内容。我将实例化Student类。

我虽然有几种方法

  1. 将方法向上移动,但其他对象确实没有任何用处

  2. 在studentsPhone方法中,我说如果(Phone == null) return;但它不是空的,而且还有其他方法在studentPhone之后

2 个答案:

答案 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
}