【发布时间】:2013-07-07 22:02:30
【问题描述】:
以下代码返回错误,但我不知道为什么。需要更改哪些内容才能进行编译?
switch (DAO.class) {
case BookDAO.class:
return bookDAO;
}
【问题讨论】:
-
它给出了什么错误?
标签: java switch-statement
以下代码返回错误,但我不知道为什么。需要更改哪些内容才能进行编译?
switch (DAO.class) {
case BookDAO.class:
return bookDAO;
}
【问题讨论】:
标签: java switch-statement
switch 与 byte、short、char 和 int 原始数据类型一起使用。它也适用于枚举类型(以及从 Java 7 开始的 String)。不是Class 类型。
DAO.class返回DAO的Class对象
【讨论】:
来自 Java 文档
开关适用于 byte、short、char 和 int 原始数据 类型。它也适用于枚举类型(在枚举类型中讨论), String 类,以及一些包装某些特定类的特殊类 原始类型:Character、Byte、Short 和 Integer
【讨论】:
如果您使用的是 Java 7 - 您可以使用带有字符串的 switch 语句。 然后你可以这样做:
switch (DAO.class.getName()){
case BookDAO.class.getName() : return bookDAO;
}
以字符串形式返回此 Class 对象表示的实体(类、接口、数组类、原始类型或 void)的名称。
【讨论】:
下面是switch语句的定义:
与 if-then 和 if-then-else 语句不同,switch 语句可以有许多可能的执行路径。 开关适用于 byte、short、char 和 int 原始数据类型。它还适用于枚举类型(在枚举类型中讨论)、String 类和一些包装某些原始类型的特殊类:Character、Byte、Short , 和整数(在数字和字符串中讨论)。
所以在switch语句中不允许Class类型(Class classOfA = A.class;)
【讨论】: