黑马程序员技术交流社区
标题:
枚举不大熟悉的说
[打印本页]
作者:
黑马杨锦喜
时间:
2012-9-21 01:23
标题:
枚举不大熟悉的说
import org.junit.Test;
public class DemoWeek {
@Test
public void test(){
print(WeekDay.THU);
}
public void print(WeekDay w){
String value=w.localValue();
System.out.println(value);
String str=w.getValue();
System.out.println("参数:"+str);
}
}
enum WeekDay{
MON("mon"){
public String localValue(){
return "星期一";
}
}
,TUE("tue"){
public String localValue(){
return "星期二";
}
}
,WED("wed"){
public String localValue(){
return "星期三";
}
}
,THU("thu"){
public String localValue(){
return "星期四";
}
};
private String value;
private WeekDay(String value){
this.value=value;
}
public String getValue(){
return this.value;
}
public abstract String localValue();
}
我想问的是最后这几句,具体是怎么实现我们所需的功能的?对枚举不大熟悉的说,很困惑这种形式?这难道是构造函数或者方法么?
/*
private String value;
private WeekDay(String value){
this.value=value;
}
public String getValue(){
return this.value;
}
*/
作者:
皮卫凯
时间:
2012-9-21 01:31
本帖最后由 皮卫凯 于 2012-9-21 01:44 编辑
private String value;
private WeekDay(String value){
this.value=value;
}
public String getValue(){
return this.value;
}
这个是自定义类的对象时 必须做的 set 、get方法。
对于enum枚举 可以分开理解:
MON,TUE,WED
// 这就是你所枚举的WeekDay的三个元素!!
MON{},TUE{},WED{}
// 理解为子类对象更好,其实内部类就是子类对象
MON("mon"){},TUE("tue"){},WED("wed"){}
//因为是子类对象,对象初始化的时候可以有参数。所以可以是 MON("mon" ){ } //而且,这些都是枚举的特点,就是这个枚举的格式。
可以把enum看做是一个类,但是要注意的是enum 不能使用 extends 关键字继承其他类,因为 enum 经继承了 java.lang.Enum(java是单一继承)。
作者:
张 涛
时间:
2012-9-21 01:32
枚举,你可以理解为类;只不过他们对象是固定的,类的对象是随便new的。里面的属性、方法、构造方法,像类中的理解就可以了。
作者:
陈振兴
时间:
2012-9-21 02:01
我的理解,枚举,类,就是他有对象,但它最特别的就是把每一个成员它能当做“单列的设计模式”来实现,这也是它最牛的地方。
让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器报错,这也就是普通变量无法做到的。
一楼说的那个Get()和Set()方法不是必须得些,得看需求的,这就是在java中的读写,只读,只写就这几种模式。
作者:
黑马杨锦喜
时间:
2012-9-22 13:13
皮卫凯 发表于 2012-9-21 01:31
private String value;
private WeekDay(String value){
this.value=value;
我现在只是明白了,很还不算是很清楚其中道理 ,我再慢慢学习看看,是否能彻底掌握吧,谢谢啦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2