java 枚举 类 enum
public abstract class Enum<E extends Enum<E>>
implements Comparable<E>, Serializable { private final String name; // 当前枚举常量名称
public final String name() {
return name;
} private final int ordinal; // 当前枚举常量次序,从0开始
public final int ordinal() {
return ordinal;
} // 专有构造器,我们无法调用。该构造方法用于由响应枚举类型声明的编译器发出的代码。
protected Enum(String name, int ordinal) {
this.name = name;
this.ordinal = ordinal;
} // 返回枚举常量的名称,默认是返回name值。可以重写该方法,输出更加友好的描述。
public String toString() {
return name;
} // 比较当前枚举常量是否和指定的对象相等。因为枚举常量是单例的,所以直接调用==操作符。子类不可以重写该方法。
public final boolean equals(Object other) {
return this==other;
} // 返回该枚举常量的哈希码。和equals一致,该方法不可以被重写。
public final int hashCode() {
return super.hashCode();
} // 因为枚举常量是单例的,所以不允许克隆。
protected final Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
} // 比较该枚举常量和指定对象的大小。它们的类型要相同,根据它们在枚举声明中的先后顺序来返回大小(前面的小,后面的大)。子类不可以重写该方法
public final int compareTo(E o) {
Enum other = (Enum)o;
Enum self = this;
if (self.getClass() != other.getClass() && // optimization
self.getDeclaringClass() != other.getDeclaringClass())
throw new ClassCastException();
return self.ordinal - other.ordinal;
} // 得到枚举常量所属枚举类型的Class对象
public final Class<E> getDeclaringClass() {
Class clazz = getClass();
Class zuper = clazz.getSuperclass();
return (zuper == Enum.class) ? clazz : zuper;
} // 返回带指定名称的指定枚举类型的枚举常量。名称必须与在此类型中声明枚举常量所用的标识符完全匹配。不允许使用额外的空白字符。
public static <T extends Enum<T>> T valueOf(Class<T> enumType,
String name) {
T result = enumType.enumConstantDirectory().get(name);
if (result != null)
return result;
if (name == null)
throw new NullPointerException("Name is null");
throw new IllegalArgumentException(
"No enum const " + enumType +"." + name);
} // 不允许反序列化枚举对象
private void readObject(ObjectInputStream in) throws IOException,
ClassNotFoundException {
throw new InvalidObjectException("can't deserialize enum");
} // 不允许反序列化枚举对象
private void readObjectNoData() throws ObjectStreamException {
throw new InvalidObjectException("can't deserialize enum");
} // 枚举类不可以有finalize方法,子类不可以重写该方法
protected final void finalize() { }
}
package testenum;
public class TestEnum {
public enum stats{
open,off,r,g,b,黄,ff0000;
}
public enum color{
}
public enum Yes {
A(0), B(1), C(2), D(3), F(4);
private Integer code;
Yes() {
}
Yes(int code) {
this.code = code;
}
public Integer getCode() {
return code;
}
}
public enum Week {
MON{
public String toLocaleString(){
return "星期一";
}
public String toLocaleString2(){
return "星期一";
}
},TUES{
public String toLocaleString(){
return "星期二";
}
},WEB{
public String toLocaleString(){
return "星期三";
}
},THUR{
public String toLocaleString(){
return "星期四";
}
},FRI{
public String toLocaleString(){
return "星期五";
}
},SAT{
public String toLocaleString(){
return "星期六";
}
},SUN{
public String toLocaleString(){
return "星期日";
}
};
public abstract String toLocaleString();
}
public static void main(String [] args){
System.out.println("《------------------------------------------------------------------》");
System.out.println(stats.class);
System.out.println(stats.off);
System.out.println(stats.open);
for(int i=0;i<stats.values().length;i++){
System.out.println("stats.values()["+i+"]:"+stats.values()[i]);
System.out.println(stats.valueOf(stats.values()[i].toString()));
}
System.out.println("《------------------------------------------------------------------》");
System.out.println(Yes.class);
System.out.println(Yes.A);
System.out.println(Yes.B.getCode());
for(int i=0;i<Yes.values().length;i++){
System.out.println("Yes.values()["+i+"]:"+Yes.values()[i]);
System.out.println(Yes.valueOf(Yes.values()[i].toString()));
}
System.out.println("《------------------------------------------------------------------》");
System.out.println(Week.class);
System.out.println(Week.MON.FRI.MON);
System.out.println(Week.SUN.toLocaleString());
for(int i=0;i<Week.values().length;i++){
System.out.println("Week.values()["+i+"]:"+Week.values()[i]);
System.out.println(Week.valueOf(Week.values()[i].toString()));
System.out.println(Week.valueOf(Week.values()[i].toString()).toLocaleString());
}
}
}
java 枚举 类 enum的更多相关文章
- Java枚举类enum
枚举类enum是JDK1.5引入的,之前都是用public static final int enum_value来代替枚举类的.枚举类enum是一种特殊的类,它默认继承了类java.lang.Enu ...
- java 枚举类 enum 总结
枚举定义: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量 ...
- java枚举类Enum方法简介(valueof,value,ordinal)
Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口. 当我们在声明一个enum类型时,我们应该注意到en ...
- Java基础(七)泛型数组列表ArrayList与枚举类Enum
一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...
- java枚举类
enum关键字用于定义枚举类,若枚举只有一个成员, 则可以作为一种单例模式的实现方式. 枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰. 枚举类的使用 priva ...
- 【转】java枚举类型enum的使用
原文网址:http://blog.csdn.net/wgw335363240/article/details/6359614 java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到 ...
- 转载 java枚举类型enum的使用 (原文地址:http://blog.csdn.net/wgw335363240/article/details/6359614)
java枚举类型enum的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static 类型来定义呢?以前我们都是采 ...
- Java基础15:深入剖析Java枚举类
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- 深入理解Java枚举类型(enum)
https://blog.csdn.net/javazejian/article/details/71333103 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(en ...
随机推荐
- Android 滑动效果进阶篇(五)—— 3D旋转
前面介绍了利用Android自带的控件,进行滑动翻页制作效果,现在我们通过代码实现一些滑动翻页的动画效果. Animation实现动画有两个方式:帧动画(frame-by-frame animatio ...
- iOS开发——实用篇Swift篇&保存图片到相册
保存图片到相册 最近在深入的学习关于swift相关技术,虽然海做不出什么好的东西,但是感觉收获不少,相信总有一样能用到,所以就总结了一下,希望大家喜欢! 1.OC中的写法 在OC中,我们需要保存图片到 ...
- Android(java)学习笔记84:自定义异常类
自定义异常: 考试成绩必须在0-100之间 很明显java没有对应的异常,需要我们自己来做一个异常 自定义异常 继承自Exception 继承自RuntimeException 下面是一个代码示例: ...
- Debian apt-get 无法补全
今天发现在终端里输入apt-get inst后按Tab键无法自动补全成 install,纳闷之余google了一下(我承认开始是baidu...),原来是没有安装 bash-completion. s ...
- 对于android触摸事件模型的一些理解
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- java中的静态方法
静态方法是属于类的,内存必须为它分配内存空间,这个空间一直由静态方法占用,内存管理器不会由于静态方法没有被调用而将静态方法的存储空间收回,这样如果将所有的方法都声明为静态方法,就会占用大量的内存空间, ...
- Source Insight新建工程文件
options->document options ->document type ->c source file 下 //添加 “.S”结尾的汇编语言支持 project -& ...
- 有关java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0
时常会遇到java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0这样的异常,现在都知道是jdk版本的问 ...
- javaweb学习总结十八(软件密码学、配置tomcat的https连接器以及tomcat管理平台)
一:软件密码学 1:对称加密 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key).对称加密有很多种算法,由于它效 ...
- Bash循环分类介绍
方法一: #!/bin/bash ` do #code here echo $i done 方法二:C语言风格 #!/bin/bash ; i<=; i++)) do printf " ...