Jafe Lee

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  49 随笔 :: 0 文章 :: 24 评论 :: 0 Trackbacks
什么是Value-specific class body呢?简而言之,就是不同的枚举常量 (enumeration constant)拥有自己的类定义,先看一个例子(这个例子的行为可以用更优雅的代码来实现,用它只是为了说明问题)
ArithmeticOp.java

TestOperator.java

  1. 定义每一个 value-specific class body (不知如何翻译~~)将会创建一个该枚举类型的匿名子类(anonymous subclass), 对应的枚举常量将会唯一的指向该子类。这里需要注意的是,尽管枚举类型不能被extends,但是它却可以拥有匿名子类,从这个意义上来说,枚举类型并不是一个严格的final类。
  2. 匿名子类就预示着这些子类没有自己的constructor,你也不能在你的代码中引用一些匿名子类自己拥有的方法或域(见上面例子ADD中的justForAdd方法),这是因为每个枚举类型的枚举常量的枚举类型都是该枚举类型的。可能这句话我表述的不好。举个例子,设有类 A, B是A的子类,B有一个自己的方法 bMethod()。在代码中,我先new一个B的实例b,然后再declare一个A的变量a,并让a指向b(a = b),这时,尽管a,b指向同一个对象,但你可以b.bMethod()却不能够a.bMethod()。
  3. 枚举类型可以定义abstract方法,但你必须至少定义一个枚举常量来实现这些abstract方法,否则将会产生编译错误。
  4. 由2可以看出,定义value-specific class body实际上就是实现枚举类型中的abstract方法或者override枚举类型种存在的方法。
posted on 2007-09-09 15:29 Jafe Lee 阅读(1172) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: