从If语句到Java中的Switch语句

时间:2015-03-08 18:53:15

标签: java if-statement switch-statement

无论如何在Java中用if语句编写这段switch语句?

Object obj;
if (obj instanceof Integer){

}

if (obj instanceof Double){

}

....

这只是一个例子。 Integer的{​​{1}}可以替换为任何其他对象类型

2 个答案:

答案 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语句(获取实例名称并以该格式比较它)的唯一解决方案是编写太多额外(和不必要的)不需要的代码,并且可以更容易以另一种方式完成。