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

范例:简单枚举类

  通过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. Struct_2路径问题

    今天在自学那个Struct2的知识点的时候,发现那个相对路径和绝对路径有点遗忘.特地去看了视频还有在百度上查了一些资料.我觉得这个路径问题对于我这个初学者来说还是有点容易遗忘的.所以,今天就添加这个新 ...

  2. Java基础学习笔记二十七 DBUtils和连接池

    DBUtils 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们讲采用apache commons组件一个成员:DBUtils.DBUtils就是JDBC的简化开发 ...

  3. 记录python接口自动化测试--主函数(第六目)

    把操作excel的方法封装好后,就可以用准备好的接口用例来循环遍历了 我的接口测试用例如下 主函数代码: run_handle_excel.py# coding:utf-8 from base.run ...

  4. c语言一,二数组

    一.PTA实验作业 题目1:7-4 简化的插入排序 1. 本题PTA提交列表 2. 设计思路 1.定义整形变量N,temp,i. 2.输入N 3.通过for(i=1;i<=N;i++)的循环语句 ...

  5. 项目Beta冲刺第二天

    1.昨天的困难,今天解决的进度,以及明天要做的事情 昨天的困难:昨天主要是在确认需求方面花了一些时间,后来终于确认了企业自查风险模块的需求问题 今天解决的进度:根据昨天确认下来的需求,我们基本上完成了 ...

  6. python的PEP8 代码风格指南

    PEP8 代码风格指南 这篇文章原文实际上来自于这里:https://www.python.org/dev/peps/pep-0008/ 知识点 代码排版 字符串引号 表达式和语句中的空格 注释 版本 ...

  7. python简单路由系统

    # 输入模块名/函数 url = input('请输入网址:') module,func = url.split('/') m = __import__('lib.'+module,fromlist= ...

  8. Flask 扩展 Mail

    安装 pip install flask-mail from flask import Flask from flask_mail import Mail, Message app = Flask(_ ...

  9. java关于for循环。

    众所周知,JAVA中for循环的基本格式为: for(初始化表达式:布尔表达式:循环后更新表达式){循环体} 举个例子来说可以写成 (1)for (int x=1;x<10;x++){ Syst ...

  10. Android接受验证码自动填入功能(源码+已实现+可用+版本兼容)

    实际应用开发中,会经常用到短信验证的功能,这个时候如果再让用户就查看短信.然后再回到界面进行短信的填写,难免有多少有些不方便,作为开发者.本着用户至上的原则我们也应该来实现验证码的自动填写功能,还有一 ...