enum 对象的常用方法介绍

int compareTo(E o) 
          比较此枚举与指定对象的顺序。

Class<E> getDeclaringClass() 
          返回与此枚举常量的枚举类型相对应的 Class 对象。

String name() 
          返回此枚举常量的名称,在其枚举声明中对其进行声明。

int ordinal() 
          返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。

String toString()

           返回枚举常量的名称,它包含在声明中。

static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) 
          返回带指定名称的指定枚举类型的枚举常量。

package test;

public class EnumTest {
public enum Color {
RED(, , ), BLUE(, , ), BLACK(, , ), YELLOW(, , ), GREEN(, , );
// 构造枚举值,比如RED(255,0,0)
private Color(int rv, int gv, int bv) {
this.redValue = rv;
this.greenValue = gv;
this.blueValue = bv;
} private int redValue; // 自定义数据域,private为了封装。
private int greenValue;
private int blueValue; public static final Color[] values=Color.values();
public static Color valueOf(int i) {
return values[i];
} public String toString() { // 覆盖了父类Enum的toString()
return super.toString() + "(" + redValue + "," + greenValue + "," + blueValue + ")";
}
} public enum ColorType{
Red(Color.RED),
Blue(Color.BLUE),
Black(Color.BLACK),
Yellow(Color.YELLOW),
Green(Color.GREEN); private Color colorId;
private ColorType(Color colorId) {
this.colorId=colorId;
} public static ColorType[] a=ColorType.values();
public static ColorType valueOf(int i) {
return a[i];
} public String toString() {
return super.toString()+"-------------->"+colorId.toString();
} } public static void main(String args[]) {
// Color colors=new Color(100,200,300); //wrong
Color color = Color.RED;
Color colorYellow=Color.YELLOW;
System.out.println(color); // 调用了toString()方法
System.out.println(color.ordinal());
System.out.println(color.compareTo(colorYellow)); //返回的是两个枚举值的顺序之差
System.out.println(Color.valueOf("BLUE"));
System.out.println(Color.valueOf()); //重写valueOf方法 System.out.println(ColorType.valueOf().toString());
} }

运行结果:

RED(,,)

-
BLUE(,,)
BLUE(,,)
Black-------------->BLACK(,,)

自定义方法:

package test;

public class EnumTest3 {
public enum EnumTest {
MON(), TUE(), WED(), THU(), FRI(), SAT() {
@Override
public boolean isRest() {
return true;
}
},
SUN() {
@Override
public boolean isRest() {
return true;
}
}; private int value; private EnumTest(int value) {
this.value = value;
} public int getValue() {
return value;
} public boolean isRest() {
return false;
}
}
public static void main(String[] args) {
System.out.println("EnumTest.FRI 的 value = " + EnumTest.SAT.isRest());
}
}

输出结果:

EnumTest.FRI 的 value = true

重写enum的valueof方法等的更多相关文章

  1. 枚举类valueOf方法的疑问

    枚举类中valueOf方法只有一个参数而Enum类中有两个参数,请问Enum实例类中的valueOf方法是从何处继承而来?   答案:jvm进行编译的时候添加的.

  2. JavaScript系列-----Object之toString()和valueOf()方法 (2)

    深入理解toString()和valueOf()函数 1.我们为什么要了解这两种方法 众所周知,toString()函数和valueOf函数,这两个函数是Object类的对象生来就拥有的,而且他们还可 ...

  3. 重写jquery的ajax方法

    //首先备份下jquery的ajax方法 var _ajax=$.ajax; //重写jquery的ajax方法 $.ajax=function(opt){ //备份opt中error和success ...

  4. 子类可以有跟父类中同名的方法,但是会重写父类中的方法,甚至是root class中的方法

    /* 子类可以重写父类中的方法,甚至是root class中的方法,比如NSObeject 的new方法,但是后提示警告如下 Method is expected to return an insta ...

  5. js中toString和valueOf方法的区别

    toString 方法 返回对象的字符串表示形式. 语法:objectname.toString([radix]) objectname 必需.要为其搜索字符串表示形式的对象. radix 可选.为将 ...

  6. JavaScript的toString()和valueof()方法

    toString()方法: 函数:函数 (function(){}).toString(); //返回"function(){}" typeof((function(){}).to ...

  7. valueOf()方法

    前面的话 关于类型转换,对象常见的两个方法是toString()和valueOf().实际上,这两个方法也可以应用在包装类型上.前面已经介绍过toString()方法,本文将介绍valueOf()方法 ...

  8. 如何真正重写window对象的方法

    重写window对象的方法不是一件新奇的事,比如我们可能需要改变默认alert的行为,如何安全的重写呢? 小菜看到某知名IT网站是这样的写法: window.alert = function(){}; ...

  9. Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)

    Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例  原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...

随机推荐

  1. ucosii(2.89)mutex 应用要点

    mutex 的创建在于共享资源打交道是可以可以保证满足互斥条件:1,必须保证继承优先级要高于可能与相应共享资源打交道的任务中优先级最高的优先级.2,不要将占有Mutex的任务挂起,也不要让占有mute ...

  2. s:iterator的多层迭代

    struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的demo:s:iterator 标签有3个属性:    value:被迭代的集合    id   :指定集 ...

  3. sessionStorage 的数据会在同一网站的多个标签页之间共享吗?这取决于标签页如何打开

    一直以来,我所以为的 sessionStorage 的生命周期是这样的:在 sessionStorage 中存储的数据会在当前浏览器的同一网站的多个标签页中共享,并在此网站的最后一个标签页被关闭后清除 ...

  4. 文件操作-touch

    本文来给大家介绍另外一个比较常用的命令--touch命令,Linux touch命令 主要用来修改文件或者目录的时间属性,或者建立新文件. 转载自https://www.linuxdaxue.com/ ...

  5. CDC相关知识点总结

    跨时钟域设计很重要,每一个项目都会有,这个要马上学会总结好.本能力属于重要而且急需的能力.

  6. 【java】【转发】classpath、path、JAVA_HOME的作用及JAVA环境变量配置

    CLASSPATH是什么?它的作用是什么? 它是javac编译器的一个环境变量.它的作用与import.package关键字有关.当你写下improt java.util.*时,编译器面对import ...

  7. appIcon

    原文地址:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconM ...

  8. python中set()函数的用法

    set顾名思义是集合,里面不能包含重复的元素,接收一个list作为参数 list1=[1,2,3,4] s=set(list1) print(s) #逐个遍历 for i in s: print(i) ...

  9. 爬虫必备:Python 执行 JS 代码 —— PyExecJS、PyV8、Js2Py

    在使用爬虫中,经常会遇到网页请求数据是经过 JS 处理的,特别是模拟登录时可能有加密请求.而目前绝大部分前端 JS 代码都是经过混淆的,可读性极低,想理解代码逻辑需要花费大量时间.这时不要着急使用 S ...

  10. 用ajax异步请求一个块

    使用用户控件,作为一个块,生成一段独立的html. 请求一个一般应用程序,在一般应用程序中加载读取用户控件,并给用户控件传值.     Page page = new Page();          ...