A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wodeairenw 中级黑马   /  2013-3-19 17:30  /  1518 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wodeairenw 于 2013-3-19 18:12 编辑
  1. public class EnumTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 WeekDay weekDay = WeekDay.MON;//这个地方如何理解,静态,调用类名.MON获得对象?
  6.          System.out.println(weekDay.nextDay());
  7.         }
  8. }
  9. public  class WeekDay//自己规定类里面的WeekDay类型的对象,普通类模拟枚举类
  10. {
  11. private WeekDay(){}

  12. public final static WeekDay SUN = new WeekDay();//静态来修饰WeekDay SUN引用?还是理解为修饰对象,对象是在堆内存中的吧,静态在方法区。这样个代码感觉是静态修饰对象,静态是不可以修饰对象的吧。
  13.                                                                             //如果把WeekDay换成weekday不和类名一致,为什么编译错误?那个大神能不能分析下枚举定义格式,如何理解枚举,和这个代码 在内存中时如何调用的?

  14. public final static WeekDay MON = new WeekDay();

  15. public WeekDay nextDay()
  16. {
  17.   if(this == SUN)
  18.   {
  19.    return MON;
  20.   }
  21.   else
  22.   {
  23.    return SUN;
  24.   }
  25. }
  26. 问题1:静态来修饰WeekDay SUN引用?还是理解为修饰对象,对象是在堆内存中的吧,静态在方法区。
  27. 问题2:如果把WeekDay换成weekday不和类名一致,为什么编译错误?那个大神能不能分析下枚举定义格式,要如何理解枚举,还有这个代码在内存中时如何调用的?
复制代码

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 赞一个!

查看全部评分

2 个回复

正序浏览
我们都知道单例, 就是 一个类只能生产一个对象。 枚举相当于多例,就是一个类,可以产生多个有限对象。要想控制对象的产生,就必须控制构造方法的访问权限,所以枚举的构造方法定义为私有的,那么就保证了我们在类的外面无法随便创建对象。类外面无法创建对象,那么就必须在类的内部创建对象,要使用这些对象,因此这些对象必须
被定义为static的 就像public final static WeekDay SUN = new WeekDay();。static 的成员在类加载的时候就会被实例化, .类名就可以访问,就像WeekDay.MON。
回复 使用道具 举报
求大神解释。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马