可以在java中使用switch(java.lang.Object)吗?

时间:2010-12-04 17:02:24

标签: java object switch-statement if-statement

我的应用程序需要具有String类型的switch case语句。

我需要这样的东西:

    Object list1 = "list1";
    Object list2 = "list2";
    Object list3 = "list3";

    Object option = "list1";
    switch (option) {
        case list1: // Do something
        case list2: // Do something
        case list3: // Do something
        default:    // Do something
    }

有可能吗?

  

修改

     

n条件下使用switch case更好,而不是if   和else?请评论一下吗?

6 个答案:

答案 0 :(得分:11)

由于您正在打开字符串,我假设字符串在编译时是已知的。在这种情况下,您可以使用枚举。

    public enum MyStrings{

        LIST1, LIST2
    }

然后

    switch(MyStrings.valueOf(option)){

         case LIST1: do something; break;
         //etc.
    }

答案 1 :(得分:3)

请参阅此问题:Why can't I switch on a String?

目前不支持,但预计将使用Java 7。

修改:实际上似乎只有String个,而不是Object

也许每个对象都应该实现一个包含你试图放入switch语句的逻辑的方法?

答案 2 :(得分:2)

在JDK 7发行版中,您可以在switch语句的表达式中使用String对象: http://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html

答案 3 :(得分:0)

不,你不能这样做(尝试并找出)。但是如果你想要这个,也许像HashMap这样的Map更适合你的目的。

答案 4 :(得分:0)

不,使用其他集合(如Hashmap)或使用数组索引来执行相同操作,创建元素数组并在索引上放置切换案例

答案 5 :(得分:0)

可以支持切换检查String,Integer和其他原始数据类型,但是在对象比较中不支持成功。