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枚举类型, 博主对原文内 ...
随机推荐
- linux --> 为什么寄存器比内存快?
为什么寄存器比内存快 计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘. 原因一:距离不同 距离不是主要因素,但是最好懂,所以放在最前面 ...
- Algorithm --> 二进制中1的个数
行文脉络 解法一——除法 解法二——移位 解法三——高效移位 解法四——查表 扩展问题——异或后转化为该问题 对于一个字节(8bit)的变量,求其二进制“1”的个数.例如6(二进制0000 0110) ...
- DB2开发系列之三——SQL函数
1.内置函数分类(SYSIBM模式内) 1)标量函数:返回一个标量值的函数: 2)聚合函数:也叫列函数,也返回一个标量值,这个值是一组输入值的计算结果:3)表函数:向引用它的 SQL 语句返回一个表: ...
- Django+xadmin打造在线教育平台(七)
十.授课教师 10.1.讲师列表页 拷贝teacher-list.html和teacher-detail.html到templates目录下 先改teacher-list.html,同样继承base. ...
- php 类接口继承练习
<?php /** * @hypo 接口的特性:接口中定义的所有方法都必须是public 接口的实现:一个接口可以使用implements操作符,类中必须实现接口中的所有方法,否则会报fatal ...
- lua continue实现
--第一种 , do while true do == then break end -- 这里有一大堆代码 -- -- break end end --第二种 i = ) do if () then ...
- 【R语言系列】作图入门示例一
假设有如下数据,我们使用plot函数作图 月龄 体重 月龄 体重 1 4.4 9 7.3 3 5.3 3 6.0 5 7.2 9 10.4 2 5.2 12 10.2 11 8.5 3 6.1 R语 ...
- 20155214&20155216 实验一 开发化境的熟悉
20155214&20155216 实验一 开发化境的熟悉 实验内容: 实验一 开发化境的熟悉-1-交叉编译环境-(使用实验室台式机) 1.建立实验目录"mkdir linux_组员 ...
- 关于python中的operator.itemgetter()函数的用法
1. operator.itemgetter(num)函数 表示对对象的第num维数据进行操作获取. >>>import operator >>>a = [1, 2 ...
- linux作为服务器,利用top命令查看服务进程的耗用情况
top命令查看进程服务如下: 其中shift+m可以按照内存的消耗进行排序,shift+p是按照cpu的消耗进程,排序,其中对cpu的消耗是一定时间,谁占用的时间越长消耗越大, 还有按空格键,会刷新一 ...