【发布时间】:2014-07-06 23:32:09
【问题描述】:
我一直在尝试使用 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 块工作正常。但是对于 switch/case 块,它不会编译。
错误提示
incompatible types
switch(type){
^
required: int
found: Class
和
error: constant expression required
case (String.class):
这对 switch 块中的所有情况重复。
如果这里有什么遗漏,请指出我。
【问题讨论】:
-
等等...编译器很清楚:
switch需要一个int,但你传递的是一个Class对象 -
如果这里有什么遗漏,请指点我。当然:Java Tutorials. The switch Statement.
-
这里除了
switch语句的错误用法,请问为什么会有这么奇怪的设计而不使用泛型? -
@shan 尝试不同的方法是件好事,但这种方法会导致代码难以维护,并且无法为真实世界的应用程序准备好。你确定这就是你想要的吗?
-
@Luiggi Mendoza :哎呀......不过没想到那么远。 :(
标签: java class oop data-structures stack