Java 与 C 的枚举
来源:互联网 发布:java消息订阅模式 编辑:程序博客网 时间:2024/04/29 12:10
枚举是什么,用我自己的话说就是一个变量可能不仅仅只有一个值,而枚举则可以把它们存在的情况都一一列举出来
enum关键字,来定义枚举的
1.C的枚举
//C#include <stdio.h>#include <stdlib.h>int main(){ enum color{red,green,blue}; enum color test ; test = red ; switch(test) { case red: printf("red"); break; case green: printf("green"); break; case blue: printf("blue"); break; default : printf("error"); break; } return 0;}
2.java的枚举
1.枚举的简介
//javaenum Color { //定义枚举类 RED,GREEN,BLUE ; //表示此处为实例化对象}public class Nice { public static void main(String args[]) { Color color = Color.BLUE ; System.out.println(color); }}//java使用枚举可以简化的替代多例设计模式
一般的枚举就这样,但是java虽然枚举支持的晚,但是java的枚举不仅仅只有这些
Enum是一个抽象类,构造如下:protected Enum(String name,int ordinal)
Enum类里面定义两个方法:
取得枚举的索引:public final int ordinal() ;
取得枚举的名字:public final String name() ;还有使用enum关键字定义的枚举里,还有一个values()方法,将枚举对象以对象数组的形式全部返回
enum Color { RED ,GREEN,BLUE ;}public class Nice { public static void main(String args[]) { //foreach循环 for(Color c : Color.values()) { //以对象数组形式全部返回 System.out.println(c.ordinal() + "-" + c.name()); } }}
那么java有 enum 和 Enum ,那么它们区别是什么?
1.enum是一个关键字,而Enum是一个抽象类
2.使用enum定义的枚举就相当于一个类继承Enum这个抽象类
2.枚举定义其他结构
其实不止是多例设计模式里可以定义属性和方法,枚举也可以,只是有点要求
1.枚举中定义的构造方法不能够使用public声明(其余都可以),如果没有无参构造,请手工调用传递参数
2.枚举对象必须放在首行,随后才可以定义属性、构造、普通方法
例:
//和C语言一样,也支持switch判断enum Color { RED,GREEN,BLUE;}public class Nice { public static void main(String args[]) { Color c = Color.BLUE ; switch(c) { //枚举判断 case RED : System.out.println("you like red"); break; case GREEN : System.out.println("you like green"); break; case BLUE : System.out.println("you like blue"); break; default : System.out.println("error"); break; } }}
//实现与多例模式操作方式相同,代码更简洁enum Color { RED("红色"),GREEN("绿色"),BLUE("蓝色") ; //最上面 private String title; //属性 private Color(String title) { this.title = title ; } public String toString() { return this.title ; }}public class Nice { public static void main(String args[]) { for(Color c : Color.values()) { System.out.println(c); //直接输出对象调用toString } }}
//枚举实现接口interface IMessage { public String getTitle() ;}enum Color implements IMessage{ RED("红色"),GREEN("绿色"),BLUE("蓝色") ; //最上面 private String title; //属性 private Color(String title) { this.title = title ; } public String toString() { return this.title ; } public String getTitle() { return this.title ; }}public class Nice { public static void main(String args[]) { IMessage msg = Color.BLUE ; System.out.println(msg.getTitle()); }}
//枚举可以在每个对象后面使用匿名内部类的形式实现抽象方法interface IMessage { public String getTitle() ;}enum Color implements IMessage{ RED("红色"){ public String getTitle() { //为什么要加字符串呢,因为不加就会无法转换为String return "为了转换String," + this ; //这是另外一个结构,所以不可以使用this.title } },GREEN("绿色"){ public String getTitle() { return "为了转换String," + this ; } },BLUE("蓝色") { public String getTitle() { return "为了转换String," + this ; } }; private String title; //属性 private Color(String title) { this.title = title ; } public String toString() { return this.title ; }}public class Nice { public static void main(String args[]) { IMessage msg = Color.BLUE ; System.out.println(msg.getTitle()); }}
//枚举里直接定义抽象方法interface IMessage { public String getTitle() ;}enum Color implements IMessage{ RED("红色"){ public String getTitle() { return "you like " + this ; } },GREEN("绿色"){ public String getTitle() { return "you like " + this ; } },BLUE("蓝色"){ public String getTitle() { return "you like " + this ; } }; private String title; //属性 private Color(String title) { this.title = title ; } public String toString() { return this.title ; } public abstract String getTitle() ;//抽象方法,每一个枚举对象必须覆写抽象方法}public class Nice { public static void main(String args[]) { System.out.println(Color.RED.getTitle()); }}
恩,功能很多,用不用随你(doge脸)。。。
0 0
- Java 与 C 的枚举
- c++与java的枚举
- C语言的枚举与宏定义
- java 枚举的原理与使用枚举设计单例
- c#线程与枚举
- JAVA枚举的作用与好处
- java枚举的概念与应用
- JAVA枚举的作用与好处
- JAVA枚举的作用与好处
- java枚举与及其switch的使用
- JAVA枚举的作用与好处
- java枚举与常量类的区别
- Java 枚举与类的区别
- Java枚举变量的遍历与转换
- JAVA枚举的作用与好处
- Java 枚举--枚举的作用
- C与C++的区别,枚举类型enum
- c之枚举型与switch的使用
- JUnit Assert方法总结
- map<> 解析总结
- android studio快捷键
- 用Nikto探测一个网站所用到的技术
- 【ios开发技术】Swift 语言深入--Swift设计模式 (2/2)
- Java 与 C 的枚举
- 算法的复杂度
- JVM方面一些推荐文章
- lombok安装、配置、使用
- F429/439 SDRAM is42s16-8Mbyte
- poj 3415 :长度不小于 k 的公共子串的个数(后缀数组+单调栈)
- Linux最常用的20个命令
- json的跨域问题
- iOS --iap内购的那些小事