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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐辉辉 中级黑马   /  2012-6-21 15:47  /  4141 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐辉辉 于 2012-6-22 15:00 编辑

关于enum下的valueOf,请帮忙做下详细介绍,最好有应用实例。
我现在只知道valueOf()内接收一个字符串,而且这个字符串还必须为枚举类中参数对象一样。然后再把这个枚举中的参数对象返回。 好像意思就是把接收过来的 字符串型的 参数对象转换成真正的枚举的参数对象。 我这样理解正确吗?

还有为什么枚举类不能继承和被继承?

4 个回复

倒序浏览
返回带指定名称的指定枚举类型的枚举常量。名称必须与在此类型中声明枚举常量所用的标识符完全匹配。(不允许使用额外的空白字符。)
简单代码示例:
  1. public class Enum_ValueDemo {

  2.         public static void main(String[] args) {
  3.                 System.out.println(Enum.valueOf(Color.class, "RED"));
  4.         }
  5. }
  6. enum Color{
  7.         RED,BLUE,BLACK,YELLOW,GREEN
  8. }
复制代码
我们自定义的枚举类都继承自java.lang.Enum类。java不支持多继承,所以不能继承其他类或被继承。
但必要的时候可以实现一个或多个其他接口。
回复 使用道具 举报
返回带指定名称的指定枚举类型的枚举常量。名称必须与在此类型中声明枚举常量所用的标识符完全匹配。(不允许使用额外的空白字符。)
简单代码示例:
  1. public class Enum_ValueDemo {

  2.         public static void main(String[] args) {
  3.                 System.out.println(Enum.valueOf(Color.class, "RED"));
  4.         }
  5. }
  6. enum Color{
  7.         RED,BLUE,BLACK,YELLOW,GREEN
  8. }
复制代码
我们自定义的枚举类都继承自java.lang.Enum类。java不支持多继承,所以不能继承其他类或被继承。
但必要的时候可以实现一个或多个其他接口。
回复 使用道具 举报
在 Enum 中提供了两个方法实现了value-valueOf模式:

public final String name();
public static <T extends=Enum<T>
第一个方法把一个枚举的值映射到一个唯一的字符串;第二个方法把一个字符串映射到了一个唯一的枚举值。

在实例的 enum 对象中,第二个方法的 signature 与 java.lang.Enum 中提供的稍微有点不同(这种不同是 java 中的编译约定导致的):


public static XXXEnum valueOf(String name);

使用同样的模式,可以十分方便地把一个枚举与一个整数对应起来,不过这种对应需要实现两个方法来构造value-valueOf模式。


    其实,这里的value-valueOf实现了一种可以映射到任意类型的可能性,并且这个模式也并不只有枚举类型才适合使用。在 java 中的枚举类只能通过列举的方式定义有限的枚举常量,而作为标志位使用的整数在 java 中对应的则是少有人问津的 BitSet 。如果通过集成一个 BitSet ,并针对指定的标志位定义成常量,则可以使用 value-valueOf 模式实现整数与受限标志位运算类之间的一一对映。
回复 使用道具 举报
看看...........................
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马