以下代码返回错误,但我不知道为什么。需要更改哪些内容才能进行编译?
switch (DAO.class) {
case BookDAO.class:
return bookDAO;
}
以下代码返回错误,但我不知道为什么。需要更改哪些内容才能进行编译?
switch (DAO.class) {
case BookDAO.class:
return bookDAO;
}
开关适用于、 、 和原始byte
数据short
类型。它也适用于枚举类型(从 Java 7 开始)。不是类型。char
int
String
Class
DAO.class
返回的类对象DAO
请参阅此以了解 .class 的含义
来自 Java 文档
开关适用于 byte、short、char 和 int 原始数据类型。它还适用于枚举类型(在 Enum Types 中讨论)、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 原始数据类型。它还适用于枚举类型(在 Enum Types 中讨论)、String 类和一些包装某些原始类型的特殊类:Character、Byte、Short 和 Integer(在 Numbers 和 Strings 中讨论)。
所以switch语句中不允许有Class类型(Class classOfA = A.class;)