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。
答案 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...
..)