java中的强大的枚举(基本没人用)
枚举的概念和多例设计模式相似,多例设计模式详见:多例设计模式代码模型
范例:简单枚举类
通过emu关键字定义一个枚举
package com.java.demo;
enum Color{
RED,BLUE,BLACK;
}
public class TestDemo{
public static void main(String args[]){
Color red = Color.RED;
System.out.println(red);
}
}
Enum类的定义以及结构
public abstract class Enum<E extends Enum<E>> extends Object implements Comparable<E>, Serializable
Enum是一个抽象类其构造方法如下
protected Enum(String name,int ordinal)
构造方法被封装
取得枚举的名字:public final String name();
取得枚举的索引:public final int ordinal();
还有一个values()方法将枚举以对象数组的形式全部返回
package com.java.demo;
enum Color{
RED,BLUE,BLACK;
}
public class TestDemo{
public static void main(String args[]){
for(Color c:Color.values()){
System.out.println(c.ordinal()+ "-"+ c.name());
}
}
}
下面见识一下枚举的强大功能吧
范例:定义对象,初始化枚举中的属性
package com.java.demo;
enum Color{
RED("红色"),BLUE("蓝色"),BLACK("黑色");//对象调用构造方法
private String colorName;
private Color(String colorName){ //这里只可以用private或者不是使用权限修饰符
this.colorName = colorName;
}
public String toString(){
return this.colorName;
}
}
public class TestDemo{
public static void main(String args[]){
Color c = Color.BLACK;//BLACK也是一个对象,引用传递
System.out.println(c);//默认调用toString()方法,直接输出对象信息:黑色 }
}
范例2:枚举实现接口
package com.java.demo;
interface IMessage{
public String getColorName();
}
enum ColorImpl implements IMessage{
RED("红色"),BLUE("蓝色"),BLACK("黑色");
private String colorName;
private ColorImpl(String colorName){
this.colorName = colorName;
}
@Override
public String getColorName() {
return this.colorName;
}
}
public class TestDemo{
public static void main(String args[]){
ColorImpl c = ColorImpl.BLACK;//BLACK也是一个对象,引用传递
System.out.println(c.getColorName());//默认调用toString()方法,直接输出对象信息:黑色 }
}
范例2.2:枚举通过匿名内部类的形式实现接口
package com.java.demo;
interface IMessage{
public String getColorName();
}
enum ColorImpl implements IMessage{
RED("红色"){
public String getColorName(){//实现接口中方法的覆写
return ""+this;//直接返回对象,表示默认调用toString方法
}
},BLUE("蓝色"){
public String getColorName(){
return ""+this;
}
},BLACK("黑色"){
public String getColorName(){
return ""+this;
}
};
private String colorName;
private ColorImpl(String colorName){
this.colorName = colorName;
}
public String toString(){
return this.colorName;
}
}
public class TestDemo{
public static void main(String args[]){
ColorImpl c = ColorImpl.BLACK;//BLACK也是一个对象,引用传递
System.out.println(c.getColorName());//默认调用toString()方法,直接输出对象信息:黑色 }
}
范例:枚举中定义抽象方法,然后通过自己的对象实现抽象方法;此时每一个枚举对象都要覆写抽象方法
package com.java.demo;
enum ColorImpl{
RED("红色"){
public String getColorName(){
return ""+this;//直接返回对象,表示默认调用toString方法
}
},BLUE("蓝色"){
public String getColorName(){
return ""+this;
}
},BLACK("黑色"){
public String getColorName(){
return ""+this;
}
};
private String colorName;
private ColorImpl(String colorName){
this.colorName = colorName;
}
public String toString(){
return this.colorName;
}
public abstract String getColorName();
}
public class TestDemo{
public static void main(String args[]){
ColorImpl c = ColorImpl.BLACK;//BLACK也是一个对象,引用传递
System.out.println(c.getColorName());//默认调用toString()方法,直接输出对象信息:黑色 }
}
java中的强大的枚举(基本没人用)的更多相关文章
- Java中使用 Long 表示枚举类
Java中使用 Long 表示枚举类 在日常的开发过程中,很多时候我们需要枚举类(enum)来表示对象的各种状态,并且每个状态往往会关联到指定的数字,如: private enum Color { R ...
- Java中的静态和枚举
一.静态成员 对静态成员最简单的解释,静态成员属于整个类而不属于某个对象,所以又叫做类变量.一个类不管创建多少个实例对象,静态变量在内存中有且只有一个(调用方法用类名调用). 通常的非静态变量称为实例 ...
- Java中的泛型、枚举和注解
1.泛型: 一.为什么要有泛型(Generic)?1.解决元素存储的安全性问题任何类型都可以添加到集合中:类型不安全2.解决获取数据元素时,需要类型强转的问题读取出来的对象需要强转:繁琐可能有Clas ...
- java中的全局变量如何实现?ThreadLocal~
全局变量就是不管你在哪里,都能够直接引用的变量,还不用担心各种问题.每个语言都有自己的全局变量,我想! 一般地,面向过程的语言当中,可能就是一个声明在最前面的变量,后面的代码直接引用,就成了全局变量! ...
- Java高级特性 第2节 java中常用的实用类(1)
一.Java API Java API即Java应用程序编程接口,他是运行库的集合,预先定义了一些接口和类,程序员可以直接调用:此外也特指API的说明文档,也称帮助文档. Java中常用的包: jav ...
- 20155301-滕树晨 第二次随笔作业--从现有技能获取的经验应用于JAVA中
第二次随笔--从现有技能获取的经验应用于JAVA中 你有什么技能比大多人(超过90%以上)更好? 这个想了半天,有一个是我乒乓球还是比较擅长的,在学校里可能比百分之90的人要强,在外面肯定是不如了.再 ...
- java中的“\t”
对于初学者来说,java中的"\t"和空格总是让人迷惑,其实很简单,通过一个例子就能很快明白! 比如说打印九九乘法表! 先来看用空格的效果! package cn.edu.nwpu ...
- Java中的枚举类型详解
枚举类型介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义 ...
- [转载] Java中枚举类型的使用 - enum
目录 1 枚举类的编译特性 2 向枚举类中添加方法 3 接口内部创建枚举 4 枚举类中使用枚举 5 扩展: 验证values()不是通过父类继承的 本文转载自博客 - Java枚举类型, 博主对原文内 ...
随机推荐
- Struct_2路径问题
今天在自学那个Struct2的知识点的时候,发现那个相对路径和绝对路径有点遗忘.特地去看了视频还有在百度上查了一些资料.我觉得这个路径问题对于我这个初学者来说还是有点容易遗忘的.所以,今天就添加这个新 ...
- Java基础学习笔记二十七 DBUtils和连接池
DBUtils 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们讲采用apache commons组件一个成员:DBUtils.DBUtils就是JDBC的简化开发 ...
- 记录python接口自动化测试--主函数(第六目)
把操作excel的方法封装好后,就可以用准备好的接口用例来循环遍历了 我的接口测试用例如下 主函数代码: run_handle_excel.py# coding:utf-8 from base.run ...
- c语言一,二数组
一.PTA实验作业 题目1:7-4 简化的插入排序 1. 本题PTA提交列表 2. 设计思路 1.定义整形变量N,temp,i. 2.输入N 3.通过for(i=1;i<=N;i++)的循环语句 ...
- 项目Beta冲刺第二天
1.昨天的困难,今天解决的进度,以及明天要做的事情 昨天的困难:昨天主要是在确认需求方面花了一些时间,后来终于确认了企业自查风险模块的需求问题 今天解决的进度:根据昨天确认下来的需求,我们基本上完成了 ...
- python的PEP8 代码风格指南
PEP8 代码风格指南 这篇文章原文实际上来自于这里:https://www.python.org/dev/peps/pep-0008/ 知识点 代码排版 字符串引号 表达式和语句中的空格 注释 版本 ...
- python简单路由系统
# 输入模块名/函数 url = input('请输入网址:') module,func = url.split('/') m = __import__('lib.'+module,fromlist= ...
- Flask 扩展 Mail
安装 pip install flask-mail from flask import Flask from flask_mail import Mail, Message app = Flask(_ ...
- java关于for循环。
众所周知,JAVA中for循环的基本格式为: for(初始化表达式:布尔表达式:循环后更新表达式){循环体} 举个例子来说可以写成 (1)for (int x=1;x<10;x++){ Syst ...
- Android接受验证码自动填入功能(源码+已实现+可用+版本兼容)
实际应用开发中,会经常用到短信验证的功能,这个时候如果再让用户就查看短信.然后再回到界面进行短信的填写,难免有多少有些不方便,作为开发者.本着用户至上的原则我们也应该来实现验证码的自动填写功能,还有一 ...