反正有没有在Java中写这段if
语句的语句在switch
声明中?从Java中的If语句到Switch语句
Object obj;
if (obj instanceof Integer){
}
if (obj instanceof Double){
}
....
这只是一个例子。的Double
Integer
可以由任何其他对象类型
反正有没有在Java中写这段if
语句的语句在switch
声明中?从Java中的If语句到Switch语句
Object obj;
if (obj instanceof Integer){
}
if (obj instanceof Double){
}
....
这只是一个例子。的Double
Integer
可以由任何其他对象类型
更换反正是有写这篇文章if语句的switch语句在Java中?
不合理,没有,因为case
标签在Java中必须是常量。 (这是有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;
}
我不建议因为它确实不必要的工作,并将无法正常在一般情况下(例如,如果你的接口或类测试,可以被继承)工作。
不是有用的,如果方法,如果代码块 – user4182277 2015-03-08 19:01:35
@ user4182277返回:“如果”是最关键的词;在这个问题中没有任何暗示它确实如此。 – 2015-03-08 19:02:29
我的意思是在这里没有必要。移动键盘鸭子。无论如何,作者应该考虑做一些重构工作。 – user4182277 2015-03-08 19:09:21
不可以,您可以看到,switch
语句用于比较同一类型的许多不同值以匹配某个其他值。
甲switch
语句形成这样的:
switch (var){
case 5:
//var == 5
break;
case 10:
//var == 10
break;
default:
//var is not 5 nor 10
break;
}
只允许比较为恒定值,因此使得向数据类型没用。 if语句对于此目的来说是更好的选择,因为使用switch语句(获取实例名称并以此格式进行比较)的唯一解决方案将会写入太多额外(并且不必要)的代码,这些代码不是必需的,并且可以更容易以另一种方式完成。
您能举个例子吗?非常感谢! – 2015-03-08 18:56:23
@manouti但是这与'instanceof'是多态的不一样。 – RealSkeptic 2015-03-08 18:56:27
@RealSkeptic你是对的。顺便说一句,[这个问题](http://stackoverflow.com/questions/5579309/switch-instanceof)可能会有所帮助。 – manouti 2015-03-08 18:58:51