无论如何在Java中用if
语句编写这段switch
语句?
Object obj;
if (obj instanceof Integer){
}
if (obj instanceof Double){
}
....
这只是一个例子。 Integer
的{{1}}可以替换为任何其他对象类型
答案 0 :(得分:2)
无论如何在Java中的switch语句中编写这段if语句?
Not 合理地,不,因为Java中的case
标签必须是常量。 (几乎所有拥有switch
的语言都是如此,JavaScript是一种罕见的例外情况。)您可能最擅长拥有的内容,但使用的是if/else
,而不只是if
}:
if (obj instanceof Integer){
// ...
}
else if (obj instanceof Double){
// ...
}
但是,您可以这样做(从Java 7或更高版本开始),但只是因为您正在测试的特定类,是final
,所以我们不必担心子类。
switch (obj.getClass().getName()) {
case "java.lang.Integer":
// ...
break;
case "java.lang.Double":
// ...
break;
}
我不推荐,因为它执行了不必要的工作,在一般情况下无法正常工作(例如,如果您正在测试接口或类可以是子类。)
答案 1 :(得分:0)
没有。您可以看到,switch
语句用于将匹配的相同类型的许多不同值与某个其他值进行比较。
switch
语句形成如下:
switch (var){
case 5:
//var == 5
break;
case 10:
//var == 10
break;
default:
//var is not 5 nor 10
break;
}
只允许比较常量值,从而使其对数据类型无用。为此目的,if语句是一个更好的选择,因为使用switch语句(获取实例名称并以该格式比较它)的唯一解决方案是编写太多额外(和不必要的)不需要的代码,并且可以更容易以另一种方式完成。