这个switch语句出了什么问题?

时间:2013-07-10 05:05:21

标签: java switch-statement

以下代码返回错误,但我不确定原因。需要更改什么才能进行编译?

switch (DAO.class) {
    case BookDAO.class: 
        return bookDAO;
}

4 个答案:

答案 0 :(得分:16)

switch适用于byteshortcharint原始数据类型。它也适用于枚举类型(以及Java 7以后的String)。不是Class类型。

DAO.class返回DAO

的Class对象

请参阅what .class means

答案 1 :(得分:4)

来自Java Docs

  

开关使用byte,short,char和int原始数据   类型。它也适用于枚举类型(在枚举类型中讨论),   String类,以及一些特定的包装类   原始类型:字符,字节,短整数和整数

More On this

答案 2 :(得分:3)

如果您使用的是Java 7,则可以将switch语句与Strings一起使用。 然后你可以做这样的事情:

switch (DAO.class.getName()){
    case BookDAO.class.getName() : return bookDAO;
}

getName():

以String形式返回此Class对象表示的实体名称(类,接口,数组类,基本类型或void)。

答案 3 :(得分:2)

以下是switch语句的定义:

与if-then和if-then-else语句不同,switch语句可以有许多可能的执行路径。 交换机使用byte,short,char和int原始数据类型。它也适用于枚举类型(在枚举类型中讨论), String类,以及包含某些基本类型的一些特殊类:Character,Byte,Short和整数(在数字和字符串中讨论)。


所以在switch语句中不允许使用类类型(Class classOfA = A.class;)