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. 解析Java分布式系统中的缓存架构(上)

    作者 陈彩华 文章转载交流请联系 caison@aliyun.com 本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景. 1 缓存概述 2 缓存的分类 缓存主要分为以下四类 2. ...

  2. 脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?

    本文引用了公众号纯洁的微笑作者奎哥的技术文章,感谢原作者的分享. 1.前言   老于网络编程熟手来说,在测试和部署网络通信应用(比如IM聊天.实时音视频等)时,如果发现网络连接超时,第一时间想到的就是 ...

  3. IDEA一定要懂的32条快捷键

    阅读本文大概需要 2 分钟.   作者:帝都羊 这些IntelliJ IDEA键盘快捷键可以让你专注于编写代码,让你的双手在键盘上起舞. 1.搜索文件名: ↑   Shift 快速连续按两下 2.显示 ...

  4. 《http权威指南》读书笔记5

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

  5. Python爬虫-萌妹子图片

    最近发现一个可以看图的地方,一张张翻有点累,毕竟只有一只手(难道鼠标还能两只手翻?).能不能下到电脑上看呢,毕竟不用等网速,还可以预览多张,总之很方便,想怎么就怎么,是吧? 刚好这几天在学python ...

  6. idea导入maven项目 傻瓜都能看懂

    1.找到你需要导入的项目 2.打开idea ------------------------------------------------------------------------------ ...

  7. linux上安装jdk环境

    只在于安装jdk1.6.jdk1.7和jdk1.8,其他版本请绕行,目的在于方便自己和大家以后急于做jdk环境,苦于没有jdk安装包和设置变量的过程,我将安装包均放在云盘中, 需要直接在连接中找即可: ...

  8. 本地语音识别开源软件pocketsphinx调试总结

    1问题一: fatal error: pocketsphinx.h: No such file or directory 解决方法: $ cd /usr/include $ sudo ln -s /m ...

  9. Ubuntu 18.04基本配置

    允许WinSCP使用root连接 默认是不允许的,具体方法出自这里(传送门),修改ssh配置,在/etc/ssh下,修改sshd_config文件 PermitRootLogin yes 即可.默认不 ...

  10. fail2ban[防止linux服务器被暴力破解]

    一 介绍fail2ban fail2ban 可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH. SMTP.FTP密 ...