- 浏览: 212453 次
- 性别:
- 来自: 北京
文章分类
enum代表一组相同类型的常量。
实例:
package util;
public enum TYPE {
//定义邮件服务器常量,必须添加对应的构造方法
SMTP_126("smtp.126.com"),SMTP_TNICE("smtp.tnice.qq.com"),SMTP_163("smtp.163.com");
private final String smtpType;
/**
* 构造函数
* @param smtpType 服务器类型值
*/
private TYPE(final String smtpType){
this.smtpType = smtpType;
}
//返回服务器对应的值
public String getValue(){
return this.smtpType;
}
public void guessValue(TYPE type){
switch(type){
case SMTP_126:System.out.println(type.getValue());break;
case SMTP_TNICE:System.out.println(type.getValue());;break;
case SMTP_163:System.out.println(type.getValue());;break;
default:System.out.println("传的类型不匹配");
}
}
//测试
public static void main(String[] args) {
for(TYPE type:TYPE.values()){
System.out.println("直接打印:"+type);
System.out.println("DeclaringClass:"+type.getDeclaringClass());
System.out.println("常量对应的value:"+type.getValue());
type.guessValue(type);
}
}
}
最后一个的输出结果:
smtp.tnice.qq.com
直接打印:SMTP_163
DeclaringClass:class util.TYPE
常量对应的value:smtp.163.com
smtp.163.com
注:经过编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum<E>.
SMTP_126反编译后都是final类型的静态常量。因此可以通过枚举类直接调用。打印出的就是该值本身。
所以实际上Enum类型就是以Java类来实现的,没有什么新的特点,只不过java编译器帮我们做了语法的解析和编译。完全也可以自己实现。但是既然有这样方便一个东西,当然会去用了。
实例:
package util;
public enum TYPE {
//定义邮件服务器常量,必须添加对应的构造方法
SMTP_126("smtp.126.com"),SMTP_TNICE("smtp.tnice.qq.com"),SMTP_163("smtp.163.com");
private final String smtpType;
/**
* 构造函数
* @param smtpType 服务器类型值
*/
private TYPE(final String smtpType){
this.smtpType = smtpType;
}
//返回服务器对应的值
public String getValue(){
return this.smtpType;
}
public void guessValue(TYPE type){
switch(type){
case SMTP_126:System.out.println(type.getValue());break;
case SMTP_TNICE:System.out.println(type.getValue());;break;
case SMTP_163:System.out.println(type.getValue());;break;
default:System.out.println("传的类型不匹配");
}
}
//测试
public static void main(String[] args) {
for(TYPE type:TYPE.values()){
System.out.println("直接打印:"+type);
System.out.println("DeclaringClass:"+type.getDeclaringClass());
System.out.println("常量对应的value:"+type.getValue());
type.guessValue(type);
}
}
}
最后一个的输出结果:
smtp.tnice.qq.com
直接打印:SMTP_163
DeclaringClass:class util.TYPE
常量对应的value:smtp.163.com
smtp.163.com
注:经过编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum<E>.
SMTP_126反编译后都是final类型的静态常量。因此可以通过枚举类直接调用。打印出的就是该值本身。
所以实际上Enum类型就是以Java类来实现的,没有什么新的特点,只不过java编译器帮我们做了语法的解析和编译。完全也可以自己实现。但是既然有这样方便一个东西,当然会去用了。
发表评论
-
JVM启动时指定-Dfile.encoding="UTF8"的作用
2013-10-17 13:50 2300简单来说就是指定JVM默认的编码方式 java io中很多方法 ... -
java多线程 小记
2012-04-15 14:49 0thread join的方法 http://blog.csdn ... -
浅析多线程
2012-04-08 22:35 0线程组 线程是被 ... -
多线程意外中断处理
2012-04-08 20:54 0本文转自:http://peirenlei.iteye.com ... -
多线程项目学习
2012-04-08 20:35 0线程组的作用: ThreadGroup类中的某些方法,可以对线 ... -
java 静态成员变量的内存分配
2012-04-06 10:28 0静态成员变量是属于类变量,即当JVM加载class文件到虚拟机 ... -
深度克隆与浅克隆
2012-04-05 16:31 1124要想实现某个对象的克隆需要该对象实现java.lang.Clo ... -
修改图片大小并添加水印
2012-03-29 13:47 1277import java.awt.*; import java. ... -
JVM的内存分配
2012-03-16 10:06 0Java里的堆(heap)栈(stack)和方法区(metho ... -
HashMap添加数据的过程
2012-03-14 22:18 7091当添加的元素的key为null ... -
几种classloader的加载范围
2012-02-28 12:43 1318Bootstrap class loader:最顶级的clas ... -
利用正则表达式获取网页中多处重复出现的标签数据
2012-02-21 11:21 2706public static void main(String[ ... -
标准的URLConnection请求
2012-01-13 16:39 0只写了主要的代码 URL url = new URL(urlS ... -
常用的ClassLoader的加载范围
2012-01-13 13:53 1402WebAppClassLoader装载器装作文件的范围: 会加 ... -
ClassLoader.getSystemClassLoader().loadClass()和Class.forName()的区别
2012-01-13 13:08 0class A { static { System.ou ... -
httpClient超时解决办法
2012-01-12 16:47 0DefaultHttpClient: 请求超时 httpcli ... -
项目中的使用技巧小记
2012-01-10 21:11 583实现数据在多线程之间的共享: 因为线程的成员变量是各个该线程实 ... -
ThreadLocal
2012-01-10 08:55 1414ThreadLocal是实现线程范围内的数据共享,即不同线程获 ... -
线程加锁优化
2012-01-08 13:19 0实际上,在某些classes中,这种instance方法的同步 ... -
实现多线程使用继承Thread类和Runnable的原因
2012-01-03 15:09 1381我们都知道实现多线程的两种方式,一种是继承Thread类,另一 ...
相关推荐
Java中的Enum的使用与分析
一个分析 enum 结构分析 源码资源
7enum和switch语句联合案例分析VC共6页.pdf.zip
主要介绍了详解Java的Enum的使用与分析的相关资料,需要的朋友可以参考下
本篇文章是对mysql中的set与enum进行了详细的分析介绍,需要的朋友参考下
具体分析如下: python中没有enum枚举类型,可能python认为这玩意压根就没用,下面列举了三种方法模拟enum枚举类型 方法1. 使用自定义类 class Numbers(object): ONE = 1 TWO = 2 THREE = 3 assert Numbers.ONE ...
主要介绍了PHP中Enum(枚举)用法,结合实例形式较为详细的分析了php中Enum(枚举)的实现与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
typedef enum Symbol { ERR = -1, END, NUM, PLUS, MINUS, TIMES, SLASH, LPAREN, RPAREN } Symbol; 对运算符和界符只需处理种类编码即可,而对num需要处理其对应的具体属性信息。ERR表示词法分析错,END表示表达式...
主要介绍了java中enum的用法,包括了枚举类型的基本定义及用法分析,对于学习Java有着一定的学习与借鉴价值,需要的朋友可以参考下
这允许在IDE中进行适当的静态分析和重构。 使用此包创建枚举的方法如下: use \ Spatie \ Enum \ Enum ;/** * @method static self draft() * @method static self published() * @method static self archived() *...
最后包括我自己的想法和分析。 对于某些语言,我已经在相应的子目录中包含了可运行的示例代码。 是否有示例代码主要取决于我是否已经为该语言安装了运行时。 我故意排除了不支持本机枚举的语言。 (据我所知)诸如...
B .RPC方法的返回值和参数必须使用包装数据类型。 C .因为JAVA的自动装箱与拆箱机制,不需要根据场景来区分数据类型。 D .所有的局部变量推荐使用基本数据类型。 多选 12.关于索引的设计,下列哪些说法符合...
主要介绍了Python简单实现enum功能的方法,简单分析了Python实现enum功能的相关技巧,需要的朋友可以参考下
在这里说明部分告诉我们使用的LETTER,DIGIT, IDENT(标识符,通常定义为字母开头的字母数字串)和STR(字符串常量,通常定义为双引号括起来的一串字符)是什么意思.这部分也可以包含一些初始化代码.例如用#include来使用...
词法分析 C# 编译原理 关键字: auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof ...
C语言枚举类型深入讲解,超详细:enum经常使用的三种方法;枚举的本质;枚举和宏定义的对比分析;Linux内核中的枚举类型及使用技巧分析;使用枚举需要注意的一些细节,在这篇文档中都会详细讲解。