- 浏览: 130386 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zzhanp:
完了?
工厂模式 -
greatwqs:
《How Tomcat WorK 》?
《How Tomcat Words 》读后理解 -
yusong0715:
...
工厂模式 -
Garfield.Geng:
// Spring有做过的。
/**
* Test ...
年末整理十四 MD5加密 -
phz50:
这帖子太逗了
女朋友想要什么
一。
jdk5 和 jdk6 中引入了enum类型,java.lang.Enum implements comparable ,Serializable 。
java.uti.concurrent.TimeUnit工具类的实现,jdk5 和 jdk6有明显区别;
jdk6中定义七种枚举: NANOSECONDS MICROSECONDS MILLISECONDS SECONDS MINUTES HOURS DAYS , 每一种值中重写了9个public方法,可供对象和类静态调用,如:
HOURS {
public long toNanos(long d) { return x(d, C5/C0, MAX/(C5/C0)); }
public long toMicros(long d) { return x(d, C5/C1, MAX/(C5/C1)); }
public long toMillis(long d) { return x(d, C5/C2, MAX/(C5/C2)); }
public long toSeconds(long d) { return x(d, C5/C3, MAX/(C5/C3)); }
public long toMinutes(long d) { return x(d, C5/C4, MAX/(C5/C4)); }
public long toHours(long d) { return d; }
public long toDays(long d) { return d/(C6/C5); }
public long convert(long d, TimeUnit u) { return u.toHours(d); }
int excessNanos(long d, long m) { return 0; }
},
TimeUnit.HOURS.toDays(30L) 返回1L ;
jdk5中定义4种枚举: ANOSECONDS(0) MICROSECONDS(1) MILLISECONDS(2) SECONDS(3) ,通过构造TimeUnit(int index)属性index值。包含一些静态 和 对象方法,
jdk6 的Timeunit的使用:
TimeUnit.values();
TimeUnit.DAYS.toHours(2)
TimeUnit unit=TimeUnit.HOURS ; unit.toDay说(24); unit.convert(1, TimeUnit.DAYS)
TimeUnit.HOURS.convert(1, TimeUnit.DAYS)
引用如下:http://blog.csdn.net/abing37/archive/2009/07/29/4391222.aspx
二. 原理:
实际上 Enum 类型就是以 Java 类来实现的,没有什么新的特点,只不过 java 编译器帮我们做了语法的解析和编译。完全也可以自己实现。
对象,看个下面的例子: 1. 代码一 WeekDay.java : view plaincopy to clipboardprint? Java Enum 类型的语法结构尽管和 java 类的语法不一样,应该说差别比较大。但是经过编译器编译之后产生的是一个 class 文件。该 class 文件经过反编译可以看到实际上是生成了一个类,该类继承了 java.lang.Enum<E>. WeekDay (javap WeekDay 命令 之后得到的内容如下 ( 去掉了汇编代码 ) : view plaincopy to clipboardprint?
/**
* @author yubing.linyb
* 2009.7.29
* 定义一个枚举类型,代表星期一到星期日的7个缩写常量
* 同时还定义了枚举类型的属性day,该属性可以是final,也可是变量
* 同时还定义了该枚举类型的一个方法printDay
*/
public enum WeekDay {
Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), Fri(
"Friday"), Sat("Saturday"), Sun("Sunday");
/**定义枚举类型自己的属性**/
private final String day;
private WeekDay(String day) {
this.day = day;
}
/**定义枚举类型自己的方法**/
public static void printDay(int i){
switch(i){
case 1: System.out.println(WeekDay.Mon); break;
case 2: System.out.println(WeekDay.Tue);break;
case 3: System.out.println(WeekDay.Wed);break;
case 4: System.out.println(WeekDay.Thu);break;
case 5: System.out.println(WeekDay.Fri);break;
case 6: System.out.println(WeekDay.Sat);break;
case 7: System.out.println(WeekDay.Sun);break;
default:System.out.println("wrong number!");
}
}
public String getDay() {
return day;
}
}
public final class WeekDay extends java.lang.Enum{
public static final WeekDay Mon;
public static final WeekDay Tue;
public static final WeekDay Wed;
public static final WeekDay Thu;
public static final WeekDay Fri;
public static final WeekDay Sat;
public static final WeekDay Sun;
static {};
public static void printDay(int);
public java.lang.String getDay();
public static WeekDay[] values();
public static WeekDay valueOf(java.lang.String);
}
三.
java Enum标识一组相同类型的常量,既能保证单例,比较时可以直接=,不用equal比较。
四。举例:
颜色: public enum Color { RED , BLUE,GREEN,BLACK ; }
public enum EnumExample {
male(1) , female(1) ;
final int value ;
EnumExample(int value){
this.value = value ;
}
}
EnumExample a = EnumExample.male ;
System.out.println(a.name() + a.value );
发表评论
-
hashmap数据结构分析的还可以
2011-09-30 15:09 793http://www.iteye.com/topic/9072 ... -
webtrends 分析
2011-07-13 17:41 1722目标: 跨页面跨域轨迹分析 大网站监控服务的部署 日志 ... -
并发服务器模型
2011-07-12 23:41 1051并发服务模型: 预先分配多线程数,使用互斥锁 预先分配多进 ... -
Google Analytics(谷歌分析) 架构与原理
2011-07-08 14:08 1530摘自: http://www.javabloger.com/a ... -
session失效的三种方法
2011-06-28 09:57 1113A. 程序级别设置:session.setMaxInacti ... -
ORACLE定时任务
2011-06-22 10:57 1350DBMS_JOB系统包是Oracle“ ... -
cron定时配置taobaoshedule springquautz
2011-06-16 16:35 726http://dogstar.iteye.com/blog/1 ... -
jquery+ json 总结
2011-06-14 17:23 650jquery+ json -
spring配置文件(备忘录)
2011-06-09 11:49 7011.基本配置:<?xml version="1 ... -
总结spring下配置dbcp,c3p0,proxool数据源链接池
2011-06-08 22:41 1414日志原文:http://blog.sohu.c ... -
callable future runnable
2011-06-03 16:28 967callable future Future模式是 ... -
java callback机制
2011-06-03 16:04 2196http://apps.hi.baidu.com/sha ... -
java clone
2011-06-02 14:36 1002摘自: http://lovelace.iteye.com/b ... -
《How Tomcat Word 》读后理解(二)HTTP协议
2011-05-25 16:50 769Http协议 -
《How Tomcat Words 》读后理解
2011-05-25 16:22 1093《how tomcat work》是一本不错的书。 偶然间发现 ... -
tomcat 打开GZIP压缩
2011-05-23 14:49 977http 的压缩可大大提高浏览网页的速度。它的原理:客户端请求 ... -
jdk6线程池ThreadPoolExecutor 总结
2011-05-19 15:02 1755这里主要总结池子的管理线程、处理任务的流程,以采用Linked ... -
HTTP请求返回状态码
2011-05-17 15:52 1164转载:http://jabber-zeng.iteye.com ... -
json理解
2011-05-16 18:47 768一。 一种对网络数据的理解 所有的数据data最终可以解析成 ... -
架构师片段
2011-04-27 22:33 693http://developer.51cto.com/deve ...
相关推荐
Java中的枚举(enum)类型是在JDK 1.5版本引入的一个强大的特性,它用于定义一组相关的常量。在C/C++等语言中,枚举通常用来表示一组具有固定值的常量集合,但在Java中,枚举不仅限于此,它提供了更多的功能和灵活性...
首先,枚举定义的基本语法是`public enum EnumName {constant1, constant2, ...}`。每个枚举常量都是`EnumName`类的实例,且它们是唯一的,不可变的。枚举类自动继承了`java.lang.Enum`类,因此可以拥有方法和字段,...
Java中的枚举(enum)是自JDK 1.5版本引入的一种强大的类型,它用于定义一组相关的常量。枚举在Java中被设计为一种特殊的类,它们默认继承自`java.lang.Enum`抽象类,并且是单继承的,这意味着它们无法再继承其他类...
在Java编程语言中,JDK的新特性之一是枚举(Enum)。枚举是一种特殊的类,它提供了一种安全的方式来表示一组固定数量的常量。在本文中,我们将深入探讨枚举类型及其在JDK中的应用。 一、枚举的定义与使用 1. 基本...
2. **枚举类型(Enum)**:JDK6增强了对枚举的支持,使得枚举更加灵活且易于使用。开发者可以定义枚举类,添加方法,实现接口,使枚举在面向对象编程中扮演了更重要的角色。 3. **自动装箱与拆箱**:在JDK6中,基本...
总结,JDK 5.0的枚举特性使得常量管理更加规范和安全,同时也为编程带来了许多便利。结合反射API,我们可以更好地操控枚举,实现更灵活的代码设计。在实际项目中,合理运用枚举可以提高代码的可读性和可维护性。对于...
枚举类型是 JDK 5.0 的新特征,Sun 引进了一个全新的关键字 enum 来定义一个枚举类。枚举类型是一种特殊的类,实际上 enum 声明定义的类型就是一个类,这些类都是类库中 Enum 类的子类(java.lang.Enum)。它们继承...
总结起来,JDK 5.0引入的常量注解、枚举、for each循环和反射特性,极大地丰富了Java语言的特性和表达能力,提升了开发效率和代码质量。通过理解并熟练应用这些特性,开发者可以编写出更加高效、安全和易于维护的...
Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。 1....
JDK 6对枚举类型进行了增强,支持枚举常量之间的比较,可以实现Comparable接口,还引入了枚举套接字(EnumSet)和枚举映射表(EnumMap),这两个集合类专门用于枚举类型的存储,提供了高效且安全的操作。...
1. **枚举类型(Enum)**:JDK 6引入了枚举类型,可以更好地表示一组固定的常量,提供比传统常量更安全、更强大的功能。 2. **动态代理(Dynamic Proxy)**:通过`java.lang.reflect.Proxy`和`java.lang.reflect....
2. **枚举类型(Enum)的增强**:在JDK 6中,枚举类型被赋予了更多的功能,如可以拥有方法和字段,可以实现接口,甚至可以定义枚举常量之间的关系。这极大地提高了枚举的可读性和可维护性。 3. **可变参数(Varargs...
枚举类型自 JDK 1.5 开始引入,为开发者提供了一种更加安全、简洁的方式来处理一组固定的数据集合。枚举中的每个元素都是该枚举类型的对象实例,并且具有以下特点: 1. **不可变性**:枚举中的元素是 `final` 和 `...
Java中的枚举类型(Enum)是在JDK 1.5版本中引入的一种特殊的类类型,它的设计目的是为了更好地管理和使用一组固定的常量。枚举在Java中提供了比传统的final常量更安全、更灵活的机制。以下是关于Java枚举类型的一些...
### Java 枚举类总结 #### 一、概述与基本概念 枚举类型(`enum`)是Java中的一种特殊类,它允许开发者定义一组命名的常量,并将其视为一个独立的类型。从JDK 1.5版本开始,Java引入了枚举类型,它提供了一种更加...
1. **增强的语言特性**:Java 6引入了多项语言层面的改进,如自动资源管理(try-with-resources)、枚举套件(enum sets)、改进的泛型类型推断以及简化I/O流的try-catch-finally结构。 2. **性能优化**:JDK 6通过...
总结起来,JDK 5的枚举类型和泛型特性提高了代码的安全性,降低了类型转换错误,增强了代码的可读性和可维护性。它们是现代Java编程不可或缺的部分,对于任何Java开发者来说,理解和掌握这些特性都是非常重要的。
3. **枚举类型(enum)**:Java 6中枚举类型成为一种完全类型,支持方法定义,枚举常量可以作为switch语句的分支,增强了枚举的安全性和灵活性。 4. **静态导入(static import)**:允许开发者直接引用类中的静态...
Java学习笔记JDK6中的第11章主要讲解了枚举类型(enum)这一特性,它是Java语言中用于创建固定数量、预定义的常量集合的构造。枚举类型是面向对象编程的一个重要概念,它提供了强类型的安全性和代码的清晰性。 1. ...
6. 使用接口组织枚举: 在更复杂的应用场景中,枚举可以按照接口组织。`Food`接口定义了两个枚举类型`Coffee`和`Dessert`,它们都实现了`Food`接口。这种方式使得枚举可以根据类别进行分组,方便管理和使用。 枚举...