Java 为什么eclipse在返回语句中给我一个错误?
我试图使selectVMwareServer方法在HashMap中存在密钥时返回VMwareServer对象。但是eclipse不喜欢我放置return语句的位置。为什么会这样?是因为方法必须返回一个对象吗 这是我的密码Java 为什么eclipse在返回语句中给我一个错误?,java,eclipse,return,Java,Eclipse,Return,我试图使selectVMwareServer方法在HashMap中存在密钥时返回VMwareServer对象。但是eclipse不喜欢我放置return语句的位置。为什么会这样?是因为方法必须返回一个对象吗 这是我的密码 package configFS; import java.util.HashMap; import java.util.Map; public class Config { private Map <String, Object> config;
package configFS;
import java.util.HashMap;
import java.util.Map;
public class Config {
private Map <String, Object> config;
public Config() {
/*
* This will create a new configuration everytime we create a new instance of Config.class
* By using the generics of String and Object I can link a name tag to any object needed.
*/
config = new HashMap <String, Object> ();
}
public void addVMwareServer(String par1) {
config.put(par1, new VMwareServer());
}
public void removeVMwareServer(String par1) {
config.remove(par1);
}
public VMwareServer selectVMwareServer(String par1) {
if (config.containsKey(par1)) {
return (VMwareServer) config.get(par1);
}
return null;
}
}
包配置;
导入java.util.HashMap;
导入java.util.Map;
公共类配置{
私有地图配置;
公共配置(){
/*
*这将在每次创建Config.class的新实例时创建一个新配置
*通过使用字符串和对象的泛型,我可以将名称标记链接到所需的任何对象。
*/
config=newhashmap();
}
public void addVMwareServer(字符串par1){
config.put(par1,新的VMwareServer());
}
public void removeVMwareServer(字符串par1){
配置删除(par1);
}
公共VMwareServer选择VMwareServer(字符串par1){
if(config.containsKey(par1)){
return(VMwareServer)config.get(par1);
}
返回null;
}
}
注意:这是一项正在进行的工作
为了使eclipse静音,我让它添加“returnnull;”如果一个方法有返回类型,它应该总是有一个return语句。 根据您的代码,如果“if”条件不满足,那么它将永远不会进入该条件,并且返回语句将永远不会执行
这就是为什么必须在“if”条件之外有一个return语句。如果一个方法有一个return类型,那么它应该总是有一个return语句。 根据您的代码,如果“if”条件不满足,那么它将永远不会进入该条件,并且返回语句将永远不会执行
这就是为什么必须在“if”条件之外使用return语句。指定在if语句(包含键)的情况下返回的内容。想一想如果你的if语句不正确,被忽略了该怎么办。方法必须返回一些东西,这就是“Null”return语句的用武之地。例如: 公共布尔selectVMwareServer(字符串par1){ 更好的解决方案可能是: 创建新字段,例如X
public void selectVMwareServer(String par1) {
if (config.containsKey(par1)) {
X = (VMwareServer) config.get(par1);
}
else//do nothing,
}
在此之后,您可以使用X,但您需要解决您的问题。希望它有点清楚。您可以指定在if语句(包含键)的情况下返回什么。考虑在if语句不成立且被忽略的情况下该怎么办。该方法必须返回一些内容,即“Null”的位置return语句很方便。例如: 公共布尔selectVMwareServer(字符串par1){ 更好的解决方案可能是: 创建新字段,例如X
public void selectVMwareServer(String par1) {
if (config.containsKey(par1)) {
X = (VMwareServer) config.get(par1);
}
else//do nothing,
}
在此之后,你可以使用X,但你需要解决你的问题。希望它有点清楚
是因为方法必须返回一个对象吗
基本上,是的
或者更准确地说,程序的每个“正常终止”路径都必须返回一个可以分配给方法返回类型的值
请注意,实际上可以在根本不使用
return
语句的情况下实现非void方法;例如
public int test() {
throw new SomeUncheckedException(...);
}
…但这通常不是有用的。编译器的路径分析代码可以指出,test
方法不能通过throw
语句…因此不需要在它后面加一个return
语句。(实际上,添加一个语句会导致编译错误。)
是因为方法必须返回一个对象吗
基本上,是的
或者更准确地说,程序的每个“正常终止”路径都必须返回一个可以分配给方法返回类型的值
请注意,实际上可以在根本不使用
return
语句的情况下实现非void方法;例如
public int test() {
throw new SomeUncheckedException(...);
}
…但这通常不是有用的。编译器的路径分析代码可以指出,
test
方法不能通过throw
语句…因此不需要在它后面加一个return
语句。(实际上,添加一个语句会导致编译错误。)typo,我指的是if blocktypo,我指的是if blocktypo,因为您总是返回VMWareServer
,所以将config
变量声明为Map
。然后,您不需要在return语句中进行强制转换。因为您总是返回VMWareServer
,所以将config
变量声明为Map>代码>。那么,您不需要在return语句中使用强制转换。