重写enum的valueof方法等
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方法等的更多相关文章
- 枚举类valueOf方法的疑问
枚举类中valueOf方法只有一个参数而Enum类中有两个参数,请问Enum实例类中的valueOf方法是从何处继承而来? 答案:jvm进行编译的时候添加的.
- JavaScript系列-----Object之toString()和valueOf()方法 (2)
深入理解toString()和valueOf()函数 1.我们为什么要了解这两种方法 众所周知,toString()函数和valueOf函数,这两个函数是Object类的对象生来就拥有的,而且他们还可 ...
- 重写jquery的ajax方法
//首先备份下jquery的ajax方法 var _ajax=$.ajax; //重写jquery的ajax方法 $.ajax=function(opt){ //备份opt中error和success ...
- 子类可以有跟父类中同名的方法,但是会重写父类中的方法,甚至是root class中的方法
/* 子类可以重写父类中的方法,甚至是root class中的方法,比如NSObeject 的new方法,但是后提示警告如下 Method is expected to return an insta ...
- js中toString和valueOf方法的区别
toString 方法 返回对象的字符串表示形式. 语法:objectname.toString([radix]) objectname 必需.要为其搜索字符串表示形式的对象. radix 可选.为将 ...
- JavaScript的toString()和valueof()方法
toString()方法: 函数:函数 (function(){}).toString(); //返回"function(){}" typeof((function(){}).to ...
- valueOf()方法
前面的话 关于类型转换,对象常见的两个方法是toString()和valueOf().实际上,这两个方法也可以应用在包装类型上.前面已经介绍过toString()方法,本文将介绍valueOf()方法 ...
- 如何真正重写window对象的方法
重写window对象的方法不是一件新奇的事,比如我们可能需要改变默认alert的行为,如何安全的重写呢? 小菜看到某知名IT网站是这样的写法: window.alert = function(){}; ...
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)
Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例 原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...
随机推荐
- WPF中在后台实现控件样式
加入现在有一个Button的样式如下: <Style TargetType="{x:Type Button}" x:Key="MyButton">. ...
- softmax_loss.cu 和 softmax_loss.cpp源码
#include <algorithm> #include <cfloat> #include <vector> #include "caffe/laye ...
- java解析sql文件
package com.athena.ckx.util; import java.io.FileInputStream; import java.io.InputStream; import java ...
- Jarvis OJ-Level3-x64
linux64位ROP技术 #!/usr/bin/env python from pwn import * elf = ELF('level3_x64') Io = remote('pwn2.jarv ...
- bootstrap历练实例:复选框或单选按钮作为输入框组的前缀或后缀
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- Bootstrap CSS概览
HTML5文档类型(<!DOCTYPE html>) Bootstrap前端框架使用了HTML5和CSS属性,为了让这些能正常工作,您需要使用HTML5文档类型(<!DOCTYPE ...
- 【线段树】bzoj3585: mex
非常精妙的线段树题 Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. Input 第一行n,m. 第二行为n个数. 从第三 ...
- Bluefruit LE Sniffer - Bluetooth Low Energy (BLE 4.0) - nRF51822 驱动安装及使用
BLE Sniffer https://www.adafruit.com/product/2269 Bluefruit LE Sniffer - Bluetooth Low Energy (BLE 4 ...
- 分析laravel的核心日志类
首先是容器 log对应的是application这个容器 首先我们查看如何获取这个日志类,我们来到\storage\app.php中找到application这个容器,点进去, 我们来到了 点击这个跳 ...
- 一个线程中lock用法的经典实例
/* 该实例是一个线程中lock用法的经典实例,使得到的balance不会为负数 同时初始化十个线程,启动十个,但由于加锁,能够启动调用WithDraw方法的可能只能是其中几个 作者:http://h ...