如何避免if中缺少return语句

use*_*513 0 java if-statement

我想使用此方法返回一个Course对象,但前提是该对象不为null.

public Course getClass1()
{
    if(class1 != null)
    {
        return class1;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个'缺少返回语句'错误,因为它可能不会返回任何内容,但如果对象为null,我不想返回任何内容,甚至不返回空字符串.我可以将方法更改为void

public void getClass1()

{
    if(class1 != null)
    {
        System.out.println(class1);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,我无法调用toString中的方法

public String toString()
{
    return super.getName() + "\t" + super.getAge() + "\t" + getStudentNumber() +
            "\n" + getClass1() + "\n" + getClass2() + "\n" + getClass3();
}
Run Code Online (Sandbox Code Playgroud)

因为不允许使用void类型.

Jac*_*ack 7

您不能有两种不同的返回类型,您的方法必须返回特定类型或没有(void).

这里唯一可行的解​​决方案是让它返回Course,或者null如果没有可用的课程.

public Course getClass1() {
  return class1;
}

public String toString() {
  Course class1 = getClass1();
  boolean class1Available = class1 != null;
  if (class1Available) {
    // something
  else {
    // something else
  }
}
Run Code Online (Sandbox Code Playgroud)