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. 【BZOJ4883】 [Lydsy1705月赛]棋盘上的守卫(最小生成树,基环树)

    传送门 BZOJ Solution 考虑一下如果把行,列当成点,那么显然这个东西就是一个基环树对吧. 直接按照\(Kruscal\)那样子搞就好了. 代码实现 代码戳这里

  2. vue局部组件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 常见排序算法整理(python实现 持续更新)

    1 快速排序 快速排序是对冒泡排序的一种改进.  它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行 ...

  4. 埃航和737MAX坠毁:软件优先级问题

    事件背景: 2019年3月10日,埃塞俄比亚航空公司一架波音737MAX8飞机发生坠机,机上157人全部遇难,包括8名中国公民.这是继去年10月29日印尼狮航空难事故之后,波音737MAX8飞机在五个 ...

  5. python中numpy.ndarray.shape的用法

    今天用到了shape,就顺便学习一下,这个shape的作用就是要把矩阵进行行列转换,请看下面的几个例子就明白了: >>> import numpy as np >>> ...

  6. 解决Database returned an invalid datetime value. Are time zone definitions for your database installed?

    设定博客文章按照时间分层筛选出现问题 ret=Article.objects.filter(user=user).annotate(month=TruncMonth("create_time ...

  7. android用OkHttp和okio包通信的坑--气死我了

    今天新建了个项目,想要用用okhttp包来实现Android和tomcat的通信, 于是就根据记忆,把以前可以用的代码复制过来了,然后呢,出现这个.... 图有点大,不知到怎么调小 很莫名其妙,我看了 ...

  8. AutoCloseable的用法

    今天学习JDBC的时候查看了接口Statement的executeQuery()方法的时候偶然发现了一个新的接口: 看到红笔圈出的那句话当时没反应过来,才知道是接口的多继承,但是后面的那个接口并没有见 ...

  9. ⑦JSP2.0的福利(标签文件)

    前言 本篇接着上一篇博客:[传送门] 这次讲的是JSP2.0的特性之一,我们可以编写标签文件,指没有标签处理器和标签类库描述符的定制动作指令,不编译,无标签类描述符. 本文结构: ①标签文件简介 ②第 ...

  10. java中String类为什么不可变?

    在面试中经常遇到这样的问题:1.什么是不可变对象.不可变对象有什么好处.在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型? 1.不可变对象,顾名思义就是创建后的对象 ...