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. Android 9.0/P 版本推荐使用 HttpURLConnection

    早在几年前,谷歌就推荐在Android2.3版本以上使用HttpURLConnection,而在即将正式发布的 Android P 版本中,谷歌彻底取消了对Apache HTTPClient的支持,针 ...

  2. Java与Python比较心得01

    Java 可以int + 字符串(str)输出,python则只可以用逗号 , 连接,或者字符串 + 字符串或int + int否则python会报错如下图:

  3. Eclipse 启动报错 An internal error occurred during: "Initializing Java Tooling"

    如图所示,我的Eclispe版本是Oxygen,启动的时候turnaround弹出这种错误. 多种情况会导致这种报错.通过[重置窗口布局],可解决大部分情况: 解决办法:点击菜单导航栏的Window ...

  4. dubbo实用知识点总结(二)

    1. 参数验证 2. 结果缓存 3. 泛化引用 客户端没有对应接口类的情况,可以直接调用 4. 泛化实现 5. 回声测试 用于检测服务是否可用 6. 上下文信息 7. 隐式传参(不常用) 8. 异步调 ...

  5. 使用 VS Code 开发和调试 .NET Core 程序

    电脑不想装几十个G的 VS2017,那就用 VS Code 吧 目标: 创建一个类库项目 Skany.Core,并用 Nuget 引用第三方组件 Hash 实现加密算法 创建一个单元测试项目 Skan ...

  6. Mysql实现null值排在最前或最后

    最近在做项目迁移,Oracle版本的迁到Mysql版本,遇到有些oracle的函数,mysql并没有,所以就只好想自定义函数或者找到替换函数的方法进行改造. oracle做数据排序的时候,有时候可以用 ...

  7. Group By Rollup

    Rollup与group by组合使用,可对分组结果进行进一步的汇总. 创建数据表 select * from emp_test (1) rollup单个字段 如按照country字段进行分组,并在最 ...

  8. Spring Boot 最核心的 3 个注解详解

    最近面试一些 Java 开发者,他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过.然而,当我问他们 Spring Boot 最核心的 3 个注解是什么,令我失望 ...

  9. Windows服务器端口绑定证书

    打开IIS:inetmgr 打开服务:ctrl+shift+Esc 查看证书秘钥: 服务器查看https证书绑定: 1) 查看证书 netsh http show sslcert 2) 将证书与端口绑 ...

  10. linux 命令 — archive

    tar 一般用法 tar -cf out.tar [files] tar -cf out.tar file1 file2 -c :创建文件 -f:指定创建的文件名称,-f必须是所有参数的最后一项,比如 ...