枚举的概念和多例设计模式相似,多例设计模式详见:多例设计模式代码模型

范例:简单枚举类

  通过emu关键字定义一个枚举

package com.java.demo;
enum Color{
RED,BLUE,BLACK;
}
public class TestDemo{
public static void main(String args[]){
Color red = Color.RED;
System.out.println(red);
}
}

Enum类的定义以及结构

public abstract class Enum<E extends Enum<E>> extends Object implements Comparable<E>, Serializable

Enum是一个抽象类其构造方法如下

protected Enum(String name,int ordinal)

构造方法被封装

取得枚举的名字:public final String name();
取得枚举的索引:public final int ordinal();
还有一个values()方法将枚举以对象数组的形式全部返回
package com.java.demo;
enum Color{
RED,BLUE,BLACK;
}
public class TestDemo{
public static void main(String args[]){
for(Color c:Color.values()){
System.out.println(c.ordinal()+ "-"+ c.name());
}
}
}

下面见识一下枚举的强大功能吧

范例:定义对象,初始化枚举中的属性

package com.java.demo;
enum Color{
RED("红色"),BLUE("蓝色"),BLACK("黑色");//对象调用构造方法
private String colorName;
private Color(String colorName){ //这里只可以用private或者不是使用权限修饰符
this.colorName = colorName;
}
public String toString(){
return this.colorName;
}
}
public class TestDemo{
public static void main(String args[]){
Color c = Color.BLACK;//BLACK也是一个对象,引用传递
System.out.println(c);//默认调用toString()方法,直接输出对象信息:黑色 }
}

范例2:枚举实现接口

package com.java.demo;
interface IMessage{
public String getColorName();
}
enum ColorImpl implements IMessage{
RED("红色"),BLUE("蓝色"),BLACK("黑色");
private String colorName;
private ColorImpl(String colorName){
this.colorName = colorName;
}
@Override
public String getColorName() {
return this.colorName;
}
}
public class TestDemo{
public static void main(String args[]){
ColorImpl c = ColorImpl.BLACK;//BLACK也是一个对象,引用传递
System.out.println(c.getColorName());//默认调用toString()方法,直接输出对象信息:黑色 }
}

范例2.2:枚举通过匿名内部类的形式实现接口

package com.java.demo;
interface IMessage{
public String getColorName();
}
enum ColorImpl implements IMessage{
RED("红色"){
public String getColorName(){//实现接口中方法的覆写
return ""+this;//直接返回对象,表示默认调用toString方法
}
},BLUE("蓝色"){
public String getColorName(){
return ""+this;
}
},BLACK("黑色"){
public String getColorName(){
return ""+this;
}
};
private String colorName;
private ColorImpl(String colorName){
this.colorName = colorName;
}
public String toString(){
return this.colorName;
}
}
public class TestDemo{
public static void main(String args[]){
ColorImpl c = ColorImpl.BLACK;//BLACK也是一个对象,引用传递
System.out.println(c.getColorName());//默认调用toString()方法,直接输出对象信息:黑色 }
}

范例:枚举中定义抽象方法,然后通过自己的对象实现抽象方法;此时每一个枚举对象都要覆写抽象方法

package com.java.demo;
enum ColorImpl{
RED("红色"){
public String getColorName(){
return ""+this;//直接返回对象,表示默认调用toString方法
}
},BLUE("蓝色"){
public String getColorName(){
return ""+this;
}
},BLACK("黑色"){
public String getColorName(){
return ""+this;
}
};
private String colorName;
private ColorImpl(String colorName){
this.colorName = colorName;
}
public String toString(){
return this.colorName;
}
public abstract String getColorName();
}
public class TestDemo{
public static void main(String args[]){
ColorImpl c = ColorImpl.BLACK;//BLACK也是一个对象,引用传递
System.out.println(c.getColorName());//默认调用toString()方法,直接输出对象信息:黑色 }
}

 

  

java中的强大的枚举(基本没人用)的更多相关文章

  1. Java中使用 Long 表示枚举类

    Java中使用 Long 表示枚举类 在日常的开发过程中,很多时候我们需要枚举类(enum)来表示对象的各种状态,并且每个状态往往会关联到指定的数字,如: private enum Color { R ...

  2. Java中的静态和枚举

    一.静态成员 对静态成员最简单的解释,静态成员属于整个类而不属于某个对象,所以又叫做类变量.一个类不管创建多少个实例对象,静态变量在内存中有且只有一个(调用方法用类名调用). 通常的非静态变量称为实例 ...

  3. Java中的泛型、枚举和注解

    1.泛型: 一.为什么要有泛型(Generic)?1.解决元素存储的安全性问题任何类型都可以添加到集合中:类型不安全2.解决获取数据元素时,需要类型强转的问题读取出来的对象需要强转:繁琐可能有Clas ...

  4. java中的全局变量如何实现?ThreadLocal~

    全局变量就是不管你在哪里,都能够直接引用的变量,还不用担心各种问题.每个语言都有自己的全局变量,我想! 一般地,面向过程的语言当中,可能就是一个声明在最前面的变量,后面的代码直接引用,就成了全局变量! ...

  5. Java高级特性 第2节 java中常用的实用类(1)

    一.Java API Java API即Java应用程序编程接口,他是运行库的集合,预先定义了一些接口和类,程序员可以直接调用:此外也特指API的说明文档,也称帮助文档. Java中常用的包: jav ...

  6. 20155301-滕树晨 第二次随笔作业--从现有技能获取的经验应用于JAVA中

    第二次随笔--从现有技能获取的经验应用于JAVA中 你有什么技能比大多人(超过90%以上)更好? 这个想了半天,有一个是我乒乓球还是比较擅长的,在学校里可能比百分之90的人要强,在外面肯定是不如了.再 ...

  7. java中的“\t”

    对于初学者来说,java中的"\t"和空格总是让人迷惑,其实很简单,通过一个例子就能很快明白! 比如说打印九九乘法表! 先来看用空格的效果! package cn.edu.nwpu ...

  8. Java中的枚举类型详解

    枚举类型介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义 ...

  9. [转载] Java中枚举类型的使用 - enum

    目录 1 枚举类的编译特性 2 向枚举类中添加方法 3 接口内部创建枚举 4 枚举类中使用枚举 5 扩展: 验证values()不是通过父类继承的 本文转载自博客 - Java枚举类型, 博主对原文内 ...

随机推荐

  1. [poj1185]炮兵阵地_状压dp

    炮兵阵地 poj-1185 题目大意:给出n列m行,在其中添加炮兵,问最多能加的炮兵数. 注释:n<=100,m<=10.然后只能在平原的地方建立炮兵. 想法:第2到状压dp,++.这题显 ...

  2. 微信公众平台开发,模板消息,网页授权,微信JS-SDK,二维码生成(4)

    微信公众平台开发,模板消息,什么是模板消息,模板消息接口指的是向用户发送重要的服务通知,只能用于符合场景的要求中去,如信用卡刷卡通知,购物成功通知等等.不支持广告营销,打扰用户的消息,模板消息类有固定 ...

  3. CSS美化网页元素

    <span>标签 </span>属性名 含义 举例font-family 设置字体类型 font-family:"隶书"font-size 设置字体大小 f ...

  4. openjudge(三)

    已知三角形的三边分别是a.b.c, 先算出周长的一半s=1/2(a+b+c) 则该三角形面积S=根号[s(s-a)(s-b)(s-c)] 这个公式叫海伦--秦九昭公式 证明: 设三角形的三边a.b.c ...

  5. 关于hbase中的hbase-site.xml 配置详解

    该文档是用Hbase默认配置文件生成的,文件源是 hbase-default.xml hbase.rootdir 这个目录是region server的共享目录,用来持久化HBase.URL需要是'完 ...

  6. Leetcode 27——Remove Element

    Given an array and a value, remove all instances of that value in-place and return the new length. D ...

  7. 记录python接口自动化测试--unittest框架基本应用(第二目)

    在第一目里写了几个简单demo,并把调用get和post请求的方法封装到了一个类里,这次结合python自带的unittest框架,用之前封装的方法来写一个接口测试demo 1.unittest简单用 ...

  8. Tornado 网站demo 一

    web服务器的工作过程 创建 listen socket, 在指定的监听端口, 等待客户端请求的到来 listen socket 接受客户端的请求, 得到 client socket, 接下来通过 c ...

  9. hdu 5274 Dylans loves tree

    Dylans loves tree http://acm.hdu.edu.cn/showproblem.php?pid=5274 Time Limit: 2000/1000 MS (Java/Othe ...

  10. HTML5 canvas绘制雪花飘落

    Canvas是HTML5新增的组件,它就像一块幕布,可以用JavaScript在上面绘制各种图表.动画等. 没有Canvas的年代,绘图只能借助Flash插件实现,页面不得不用JavaScript和F ...