缺少回程表

时间:2019-01-22 07:55:53

标签: java

public Company getCompanyByID (int ID) {

    boolean hasKey = Company.AllCompanies.containsKey(ID);
    if (hasKey == true) {

    Company C = Company.AllCompanies.get(ID);
    return C;
    }
// In this case IDE says Missing Return Statement
} 



public Company getCompanyByID (int ID) {

    boolean hasKey = Company.AllCompanies.containsKey(ID);
    if (hasKey == true) {
    //In this case, if condition based statement can't be written, which is written outside the code block where it should be

    }
    Company C = Company.AllCompanies.get(ID);
    return C;

}    

首先,我想检查作为参数提供的Key是否包含在TreeMap中?如果参数中提供的Key是在TreeMap中具有值条目的有效键,那么我想返回Value,在这种情况下,它是Company类的Object。

3 个答案:

答案 0 :(得分:2)

编译器试图告诉您的是hasKey == false不返回任何内容。另外,hasKey = true是赋值,而不是布尔条件。您应该使用if(hasKey)

public Company getCompanyByID (int ID) {

    boolean hasKey = Company.AllCompanies.containsKey(ID);
    if (hasKey) {

        Company C = Company.AllCompanies.get(ID);
        return C;
    }
    return null;
} 

答案 1 :(得分:1)

您还应该在if语句之外返回一个值。

另外,hasKey=true是错误的

答案 2 :(得分:1)

在任何情况下(/在任何if-else分支中),java方法都必须返回声明的返回类型。否则,将抛出(声明的或运行时)异常。

因此,当 AllCompanies.containsKey(ID)时,您应该清楚该做什么/该返回什么。

可能的解决方案:

  • 返回null(null类似于(几乎)任何类型……期望:布尔值,int,short,byte,... double(“值类型”))
  • 引发(自定义或通用)异常(例如throw new IllegalArgumentException("No customer found for id:" + ID); link
  • 或者甚至:创建一个new公司,将其添加到AllCompanies中,然后返回。 (但是对于将来的开发人员,该方法应命名为getOrCreate... ..)
  • 所有其他选择...