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. Spring整合MyBatis 你get了吗?

    Spring整合MyBatis 1.整体架构dao,entity,service,servlet,xml 2..引入依赖 <dependencies> <dependency> ...

  2. Emmet/Zen Coding 快速入门说明

    快速参考 以下是支持的特性: ele creates an HTML element tag 展开一个HTML元素标签 # creates an id attribute 作用于元素标签,展开一个id ...

  3. 你不知道的JavaScript --- 作用域相关

    本篇是<你不知道的JavaScript>的读书笔记 什么是作用域? 程序离不变量,那么变量存储在哪里?程序需要时如何找到他们? 这些问题说明需要一套设计良好的规则来存储变量, 并且之后可以 ...

  4. yolo_v3训练自己的模型(人脸及deep-sort)

    做deep-sort多目标跟踪需要结合yolo_v3进行检测行人 由于我的项目中需要对人脸进行检测,所以需要训练针对人脸的模型 训练样本是来自WIDER-FACE人脸库.(有3w+的图片和标注框) d ...

  5. Python编程Day7——字符编码、字符与字节、文件操作

    一.字符编码 重点 ***** 1. 什么是字符编码:将人识别的字符转换计算机能识别的01,转换的规则就是字符编码表2. 常用的编码表:ascii.unicode.GBK.Shift_JIS.Euc- ...

  6. 关于 Kubernetes 中的 Volume 与 GlusterFS 分布式存储

    容器中持久化的文件生命周期是短暂的,如果容器中程序崩溃宕机,kubelet 就会重新启动,容器中的文件将会丢失,所以对于有状态的应用容器中持久化存储是至关重要的一个环节:另外很多时候一个 Pod 中可 ...

  7. Linux编程 19 编辑器(vim 用法)

    一.概述 在开启shell脚本编程之前,必须要知道一款文本编辑器的用法,如文本编辑的查找,剪切,粘贴,定位等, 本篇只讲vim编辑器.vim编辑器全名叫vi improved,是经过对Unix系统vi ...

  8. sql server I/O硬盘交互

    一. 概述 sql server作为关系型数据库,需要进行数据存储, 那在运行中就会不断的与硬盘进行读写交互.如果读写不能正确快速的完成,就会出现性能问题以及数据库损坏问题.下面讲讲引起I/O的产生, ...

  9. SpringBoot 启动概述

    透过现象看本质,SpringApplication 只是将一个典型的Spring应用的启动流程进行了扩展,因此,透彻理解 Spring 容器是打开 Spring Boot 大门的一把钥匙. Sprin ...

  10. MFC应用技术之CTreeControl的使用

    MFC应用技术之CTreeControl的使用 一丶MFC添加树控件.添加父节点跟子节点. MFC上面放一个树控件.并未这个树控件绑定变量.然后添加一个按钮.按钮的作用就是添加父节点跟子节点. PS: ...