public class TestEnum2
{
static public enum Day { Monday, Tuesday, Wednesday, Thursday, Friday,
Saturday, Sunday
}; void showDay(Day d)
{
switch (d)
{
case Monday: //11行 Monday要是改成Day.Monday 编译时就会报错
System.out.println("今天是星期一");
break;
case Tuesday:
System.out.println("今天是星期二");
break;
case Wednesday:
System.out.println("今天是星期三");
break;
case Thursday:
System.out.println("今天是星期四");
break;
case Friday:
System.out.println("今天是星期五");
break;
case Saturday:
System.out.println("今天是星期六");
break;
case Sunday:
System.out.println("今天是周日");
break;
}
} public static void main(String[] args)
{
Day d = Day.Monday; //为什么这里 把Monday改为Day.Monday, 编译时会报错,这不是与11行有冲突么
//请问到底什么时候必须用Monday, 什么时候必须用Day.Monday ????请诸位高手指教
TestEnum2 te = new TestEnum2();
te.showDay(d); System.out.println("嘿嘿!");
}
}
/*
在JDK 1.6中的运行结果是:
-------------------
今天是星期一
嘿嘿!
-------------------
*/
解决方案 »
- 请问怎样查看java程序占用的内存
- 如何确定调用的是类中的方法还是接口中实现的方法
- java Vector中存放的都是byte元素,如何将其赋给一个byte[]
- 各位大虾帮我看下有什么好点的方法从33个数中选6组合,并放到一个数组中
- 竞选开发组长方案,请大家指教
- 关于取得网页流文件的问题,高分相赠
- 请问在Java中有没有将Float数小数点后按要求的位数四舍五入的方法呢?
- 我要做个FRAM,还有两个按狃,按狃之间有个线段连着,MOUSEDRAGGED其中一个,线段随着变化。
- 在web页中用网格显示查询数据
- 大神何在,小弟来求教了
- 面试题:在MVC 模型中,控制层可以控制视图层或者控制层可以控制model层吗?
- 【求助】请问能向Collection类中装入基本类型的数据么?
这是因为你的Day是一个内部类, 如果你重新建一个类Day.java, 然后用 import static Day.*, 就可以了.
鄙视那个写书的。
Sunday,这几个值,所以得写成Day.Monday,表示取的是Monday,然后在case语句当中发现匹配的Monday
执行后边的语句,switch语句中的case标签只能写整数,因为枚举默认的是整数,ok!
即使这个枚举类型写在外边,你还得这样写Day.Monday;要不编译器知道你的Monday是什么意思,LZ
只要明白Day是一种类型就可以了,你也可以这样写,如下:public class test
{
void showDay(Day d)
{
switch (d)
{
case Monday: //11行 Monday要是改成Day.Monday 编译时就会报错
System.out.println("今天是星期一");
break;
case Tuesday:
System.out.println("今天是星期二");
break;
case Wednesday:
System.out.println("今天是星期三");
break;
case Thursday:
System.out.println("今天是星期四");
break;
case Friday:
System.out.println("今天是星期五");
break;
case Saturday:
System.out.println("今天是星期六");
break;
case Sunday:
System.out.println("今天是周日");
break;
}
} public static void main(String[] args)
{
Day d = Day.Monday; //为什么这里 把Monday改为Day.Monday, 编译时会报错,这不是与11行有冲突么
//请问到底什么时候必须用Monday, 什么时候必须用Day.Monday ????请诸位高手指教
test te = new test();
te.showDay(d); System.out.println("嘿嘿!");
}
}
enum Day { Monday, Tuesday, Wednesday, Thursday, Friday,
Saturday, Sunday
};
2008年11月9日12:34:35
有关枚举常量的使用问题
*/public class TestEnum2
{
public enum Day { Monday, Tuesday, Wednesday, Thursday, Friday,
Saturday, Sunday
}; void showDay(Day d)
{
switch (d)
{
case Monday: //11行 Monday要是改成Day.Monday 编译时就会报错
System.out.println("今天是星期一");
break;
case Tuesday:
System.out.println("今天是星期二");
break;
case Day.Wednesday: //17行
System.out.println("今天是星期三");
break;
case Thursday:
System.out.println("今天是星期四");
break;
case Friday:
System.out.println("今天是星期五");
break;
case Saturday:
System.out.println("今天是星期六");
break;
case Sunday:
System.out.println("今天是周日");
break;
}
} public static void main(String[] args)
{
Day d = Day.Monday; //37行 为什么这里 把Monday改为Day.Monday, 编译时会报错,这不是与11行有冲突么
//请问到底什么时候必须用Monday, 什么时候必须用Day.Monday ????请诸位高手指教
TestEnum2 te = new TestEnum2();
te.showDay(d); switch (d)
{
case Monday: //44行 Monday 要是改为Day.Monday 同样会出错 出错的提示信息是:“枚举 switch case 标签必须为枚举常量的非限定名称”
System.out.println("今天是星期一");
break;
case Tuesday:
System.out.println("今天是星期二");
break;
case Wednesday:
System.out.println("今天是星期三");
break;
case Thursday:
System.out.println("今天是星期四");
break;
case Friday:
System.out.println("今天是星期五");
break;
case Saturday:
System.out.println("今天是星期六");
break;
case Sunday:
System.out.println("今天是周日");
break;
} System.out.println("嘿嘿!");
}
}
/*
在JDK 1.6中的运行结果是:
-------------------
今天是星期一
嘿嘿!
-------------------
总结:
11和44行只能用Monday,不能用Day.Monday
37行只能用Day.Mondy, 不能用Monday
之所以如此,据某网友的说法,case标签只能使用枚举常量,即如果枚举常量是在case
中是使用的话,则规定不能在枚举常量的前面加类名,其他地方要使用枚举常量的话,则
必须得都加类名来作为限定符
11和44行是在case中,所以Monday前面不能加类名Day
37行不是在case中使用,所以必须在前面加类名Day 比如:如果把17行的Wednesday改为Day.Wednesday,则编译时会提示如下信息:
--------------------
TestEnum2.java:17: 枚举 switch case 标签必须为枚举常量的非限定名称
case Day.Wednesday:
^
1 错误
--------------------
*/