gpt4 book ai didi

Java switch/case 与 if 问题

转载 作者:行者123 更新时间:2023-12-01 17:11:14 26 4
gpt4 key购买 nike

我一直在尝试使用java类来模拟Stack。这是我的类构造函数:

        public Stack(Class<?> type){

if(type==String.class){

//...

}

switch(type){

case (String.class):
//...
break;
case (Integer.class):
//...
break;

case (Double.class):
//...
break;

case (Byte.class):
//...
break;

default:
break;

}

this.counter = -1;

}

但令我困惑的是,if block 工作正常。但对于 switch/case block ,它无法编译。

错误提示

incompatible types
switch(type){
^
required: int
found: Class

还有

error: constant expression required
case (String.class):

这对 switch block 中的所有情况重复。

请指出这里是否缺少任何内容。

最佳答案

Java switch/case 仅适用于原语(byte、short、char 和 int)、枚举(来自 java 5)和字符串(来自java 7) 仅数据类型。查看oracle教程here

Unlike if-then and if-then-else statements, the switch statement can have a number of possible execution paths. A switch works with the byte, short, char, and int primitive data types. It also works with enumerated types (discussed in Enum Types), the String class, and a few special classes that wrap certain primitive types: Character, Byte, Short, and Integer (discussed in Numbers and Strings).

您可以像下面这样使用

switch(type.getName()){

case ("java.lang.String"):
//...
break;
...
}

关于Java switch/case 与 if 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23730416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com