以下代码返回错误,但我不确定原因。需要更改什么才能进行编译?
switch (DAO.class) {
case BookDAO.class:
return bookDAO;
}
答案 0 :(得分:16)
switch适用于byte
,short
,char
和int
原始数据类型。它也适用于枚举类型(以及Java 7以后的String
)。不是Class
类型。
DAO.class
返回DAO
答案 1 :(得分:4)
来自Java Docs
开关使用byte,short,char和int原始数据 类型。它也适用于枚举类型(在枚举类型中讨论), String类,以及一些特定的包装类 原始类型:字符,字节,短整数和整数
答案 2 :(得分:3)
如果您使用的是Java 7,则可以将switch语句与Strings一起使用。 然后你可以做这样的事情:
switch (DAO.class.getName()){
case BookDAO.class.getName() : return bookDAO;
}
以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;)