黑马程序员技术交流社区
标题:
枚举的问题,问题见注释
[打印本页]
作者:
狂风逆流
时间:
2013-12-20 23:08
标题:
枚举的问题,问题见注释
package cn.itcast.day1;
public class WeekDay {
private WeekDay(){}
public final static WeekDay SUN=new WeekDay();
//这是什么意思,为什么可以在本类中直接new呢?为什么不直接定义一个String常量呢?
//为什么要定义成WeekDay对象的?求解释
public final static WeekDay MON=new WeekDay();
public WeekDay nextDay(){
if(this==SUN){
return MON;
}else{
return SUN;
}
}
public String toString(){
return this==SUN?"SUN":"MON";
}
}
复制代码
作者:
几番意难相付
时间:
2013-12-21 10:43
public final static WeekDay SUN=new WeekDay();
//这是什么意思,为什么可以在本类中直接new呢?为什么不直接定义一个String常量呢?
这是什么意思
因为WeekDay 的构造方法是私有的 也就是不允许创建WeekDay 的对象 如果想要获取WeekDay 的对象
就要通过weekday中定义的方法
为什么可以在本类中直接new呢
在类中原本就可以直接创建本类对象 将类的构造方法私有 只是不让本类以外的元素创建该类的对象
为什么不直接定义一个String常量呢?
如果直接定义成String常量 就无法使用本类中的nextDay方法 因为只有本类对象才能调用本类中定义的方法
//为什么要定义成WeekDay对象的?求解释
同上
作者:
刘松703
时间:
2013-12-21 10:52
你想定义一个String字符串也是可以的,但是,这个是视情况而定的,在不同的代码中情况也就不同,并不是非得public final static WeekDay SUN=new WeekDay(); 并不是非得new出这个类的对象,这里new出WeekDay对象,那么就是为了使用此类里面的方法
作者:
想你的夜
时间:
2013-12-21 12:11
你好,你这段代码这个类,是枚举类,具体分析请看代码后面
private WeekDay(){}//构造方法是私有的
public final static WeekDay SUN=new WeekDay();
//在这里,该枚举类,前面的构造方法是私有的,别人没权限new对象,只有在自己内部new一个对象,你说的为什么不直接定义String常量,这样的话就失去了枚举的优点,你没法定义nextDay方法方法吧,如果是简单的常量,不是很复杂当然可以使用String
//因为定义成WeekDay对象的,才能在主代码中通过对象直接调用枚举中的枚举值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2