Java中枚举其实就是静态常量,今天发现枚举里面其实还能加方法,学习了下,

代码如下:

 package org.pine.test;

 import java.util.HashMap;
import java.util.Map; public enum Color {
//静态常量
RED(1,"红色"),GREEN(2,"绿色"),BLUE(3,"蓝色"),YELLOW(7,"黄色");
//属性
private int index;
private String name;
//构造方法
Color(int index, String name){
this.index=index;
this.name=name;
}
//set、get
public int getIndex() {
return this.index;
} public void setIndex(int index) {
this.index = index;
} public String getName() {
return this.name;
} public void setName(String name) {
this.name = name;
} /**
*通过index获取name
* @param index
* @return name
*/
public static String getName(int index){
Color[] colors = Color.values();
for(Color color:colors){
if(color.getIndex()==index){
return color.getName();
}
}
throw new RuntimeException("Could not find the Color.");
} /**
* 通过name获取index
* @param name
* @return index
*/
public static int getIndex(String name){
Color[] colors = Color.values();
for(Color color:colors){
if(color.getName().equals(name)){
return color.getIndex();
}
}
throw new RuntimeException("Could not find the Color.");
} /**
*通过index获取Color
* @param index
* @return Color
*/
public static Color getColor(int index){
Color[] colors = Color.values();
for(Color color:colors){
if(color.getIndex()==index){
return color;
}
}
throw new RuntimeException("Could not find the Color.");
} /**
* 通过name获取Color
* @param name
* @return Color
*/
public static Color getColor(String name){
Color[] colors = Color.values();
for(Color color:colors){
if(color.getName().equals(name)){
return color;
}
}
throw new RuntimeException("Could not find the Color.");
} /**
* 红路灯变换
*/
public static Color next(Color color){
Map<Color,Color> map = new HashMap();
map.put(RED,GREEN);
map.put(GREEN,YELLOW);
map.put(YELLOW,RED);
return map.get(color);
} /**
* 重写toString
* @return
*/
@Override
public String toString() {
return "Color{" +
"index=" + index +
", name='" + name + '\'' +
'}';
}
}

测试类:

 package org.pine.test;

 public class ColorTest {

    public static void main(String[] args){
Color r = Color.RED;
r.setIndex(4); Color g = Color.GREEN;
g.setIndex(5); Color b= Color.BLUE;
b.setIndex(6); System.out.println(r.getIndex());
System.out.println(g.getIndex());
System.out.println(b.getIndex()); System.out.println(r);
System.out.println(g);
System.out.println(b); //通过index获取name
String name = Color.getName(4);
System.out.println(name); //通过name获取index
int index = Color.getIndex("绿色");
System.out.println(index); //通过index获取Color
Color c1 = Color.getColor(5);
System.out.println(c1); //通过name获取Color
Color c2 = Color.getColor("蓝色");
System.out.println(c2); Color c3 = Color.valueOf("RED");
System.out.println(c3);
//红绿灯变换
System.out.println(Color.next(Color.RED));
System.out.println(Color.next(Color.GREEN));
System.out.println(Color.next(Color.YELLOW));
}
}

Java中枚举的使用的更多相关文章

  1. Java中枚举的写法和用法

            在公司代码中,用了一大堆的枚举,看得我好懵逼.下面开始看看枚举怎么写和怎么用. 一.枚举的写法         关于枚举的写法,网上好多这方面的知识.这里直接贴一个我自己写的枚举类的代 ...

  2. java基础---->Java中枚举的使用(一)

    这里介绍一下java中关于枚举的使用. java中枚举的使用 一.枚举中可以定义方法 参照于TimeUnit的使用,TimeUnit.MILLISECONDS.sleep(1000); LoveUti ...

  3. 关于Java中枚举Enum的深入剖析

    在编程语言中我们,都会接触到枚举类型,通常我们进行有穷的列举来实现一些限定.Java也不例外.Java中的枚举类型为Enum,本文将对枚举进行一些比较深入的剖析. 什么是Enum Enum是自Java ...

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

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

  5. java中枚举类的实际应用

    知识点:在Java中,使用枚举类,当遇到实例类型有限的类时,并且数据库中用状态码代表一种含义时,如星期,性别,员工登陆某系统的状态等等, 可以考虑使用枚举类 本例子可以仿照,也可以使用自定义的类型处理 ...

  6. java中枚举类型的使用

    Java 枚举(enum) 详解7种常见的用法 JDK1.5引入了新的类型——枚举.在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便. web项目里实体类使用枚举类型: 一般在该实体 ...

  7. Java中枚举的常见用法

    在JDK1.5以后引入了一种新的类型,就是枚举(enum).enum是用来声明枚举类型数据,它可以像数组一样存储许多的元素,但是不同于数组的是,它除了数字不能存储以外, 其他类型的如字母.特殊符号.汉 ...

  8. Java中枚举类型简单学习

    /* * enum类型不允许继承 * 除了这一点,我们基本上可以将enum看作一个常规的类 * 我们可以添加自己的方法与属性,我们也可以覆盖其中的方法. * 不过一定要在enum实例序列的最后添加分号 ...

  9. K:java中枚举的常见用法

    用法一:常量   在JDK1.5 之前,我们定义常量都是: public static fianl.....现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. ...

随机推荐

  1. 原来你离BAT只有一步之遥

    ladies and乡亲们 喜迎全民嗨购双11 i春秋准备搞一波大优惠 优惠力度有多大 跨店凑单满400-50? 指定商品199减100? 史无钜惠 不凑单 不指定 一次直降9000元 原价:2580 ...

  2. 动态调试|Maccms SQL 注入分析(附注入盲注脚本)

    0x01 前言 已经有一周没发表文章了,一个朋友叫我研究maccms的代码审计,碰到这个注入的漏洞挺有趣的,就在此写一篇分析文. 0x02 环境 Web: phpstudySystem: Window ...

  3. 深入分析.NET应用程序SQL注入【危害】

    前言:   前面我们已经简单的剖析了一下.NET应用程序SQL注入.没有看过的朋友移步:http://bbs.ichunqiu.com/thread-7636-1-1.html,在上一篇文章我们已经了 ...

  4. Javascript高级编程学习笔记(68)—— 事件(12)设备事件

    设备事件 随着智能手机与平板电脑的普及,为了更好地让用户与这些设备进行交互 浏览器引入了一种新的方式,而一类新的事件也应运而生,这就是设备事件 W3C从2011年开始制定关于设备事件的草案 下面将会介 ...

  5. 第82节:Java中的学生管理系统

    第82节:Java中的学生管理系统 学生管理系统的删除功能 删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet ...

  6. 《http权威指南》读书笔记7

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  7. tomcat编译超过64k大小的jsp文件报错原因

    今天遇到一个问题,首先是在tomcat中间件上跑的web项目,一个jsp文件,因为代码行数实在是太多了,更新了几个版本之后编译报错了,页面打开都是报500的错误,500的报错,知道http协议返回码的 ...

  8. RocketMQ入门手册

    前言 继我上一篇博客后 分布式消息队列RocketMQ学习教程① 上一篇博客最主要介绍了几种常用的MQ,所以本博客再简单介绍一下RocketMQ的原理和简单的例子,基于Java实现,希望可以帮助学习者 ...

  9. BaseDao优化

    BaseDao优化2种方法 1. try { //读取配置文件,配置文件保存了数据库的东西 String path=”database.properties”; //创建实例化对象 Propertie ...

  10. 网管到CEO的10年逆袭之路

    把我个人近一年来讲的技术人员如何成长的鸡汤课整理了出来,送给大家<网管到CEO的10年逆袭之路>