JDK1.5使用总结 --《Java 1.5 Tiger: A Developer's Notebook》
2006-01-06 11:08
741 查看
JDK1.5.1出来了,是不痛不痒的Debug版本。
感觉JDK1.5最重要的革命是Annotations,而其余的部分,如Generics和Concurrency和JVM Tools对于某些OpenSource或许是重要的武器,但对于我们这样的星斗小民却没什么感觉。再其余的的就是些小改动了。
又读了一遍〈Java 1.5 Tiger: A Developer's Notebook〉,结合之前的应用,总结有用的新特性如下:
0.Annotations 最最重要的功能,相信是和AOP一道,打破传统C/C++樊篱的语言革命武器。相比之下,动态语言只是简化了代码量,而没有在编程架构上有所突破。 1.AutoBoxing
这是JDK1.5唯一让小市民们有感觉的新特性,终于不用再Integer和int间显式转换了,但这本来就是天经地义的事情。 2.Generics
感觉像给所有容器类加了一个强类型的锁,在Python这样的动态语言大行其道的世界里,强类型似乎不那么吃香。
Generics好处就是Type Safe且循环的时候不用作类型转换了。不好就是所有定义和声明的地方都要加上类型定义,使得总代码量反而增加了。如果用旧式循环语法,连Iterator都要声明类型。
又或者,可以尝试写自己的泛型类,这对某些Open Source Util类或许有帮助,但自己的业务类,只会在OO无法解决之下,才会考虑使用。比如
代替了interator。但除了几个基本类型,必须要用泛型声明Collection。 4.枚举
枚举可以代替以前批量的
public static final a=1;
public static final b=2;
更可以代替更不守规矩的直接使用String "A","B"和int 1,2
代替第2种情况的好处自不待言。statifc final a=1 因为还是不能限制程序员偷懒直接使用int,所以输与enum。而且enum的代码量更少,还可以做其他的扩展。 1.Base
public enum Grade {A,B,C};
Grade.A.toString()="A";
Grade.valueOf("A") returns Grade.A;
toString()方法可以重载,但需要同时重载valueOf()方法 2.通常,枚举都是inline定义的,很少自己单独占一个class文件
3.遍历
复杂还没细看 5.静态导入
简化了工具类的使用,比如StrUtil.isEmpty()可以写成isEmpty()了,而且可以只import指定的函数
另外还可以静态导入Enum,比如Status.A可以写成A了,但也引起了阅读的模糊。 6.其他特性更好的UniCode支持,和JDBC RowSet。 7.对我有用的特性到此为止
Threading, JVM Tools和Swing(但愿ArogUML等有了新的Metal Ocean风格后会漂亮一些),Queue还有Network和Secuirty的小改进没有用得上的场合,
C style的Formater不想用,而可变参数其实在JDK1.4下可以传入的时候就用一个List完成,而不是传入的时候用String...,到了函数里面才把String...转回List 更为具体的JDK1.5更新,在 http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html
J2SE 1.5 in a nutshell 中文版 http://dev.csdn.net/develop/article/24/24440.shtm
感觉JDK1.5最重要的革命是Annotations,而其余的部分,如Generics和Concurrency和JVM Tools对于某些OpenSource或许是重要的武器,但对于我们这样的星斗小民却没什么感觉。再其余的的就是些小改动了。
又读了一遍〈Java 1.5 Tiger: A Developer's Notebook〉,结合之前的应用,总结有用的新特性如下:
0.Annotations 最最重要的功能,相信是和AOP一道,打破传统C/C++樊篱的语言革命武器。相比之下,动态语言只是简化了代码量,而没有在编程架构上有所突破。 1.AutoBoxing
这是JDK1.5唯一让小市民们有感觉的新特性,终于不用再Integer和int间显式转换了,但这本来就是天经地义的事情。 2.Generics
感觉像给所有容器类加了一个强类型的锁,在Python这样的动态语言大行其道的世界里,强类型似乎不那么吃香。
Generics好处就是Type Safe且循环的时候不用作类型转换了。不好就是所有定义和声明的地方都要加上类型定义,使得总代码量反而增加了。如果用旧式循环语法,连Iterator都要声明类型。
又或者,可以尝试写自己的泛型类,这对某些Open Source Util类或许有帮助,但自己的业务类,只会在OO无法解决之下,才会考虑使用。比如
public class Box <T> { private List<T> contents; }3. The for/in statement
代替了interator。但除了几个基本类型,必须要用泛型声明Collection。 4.枚举
枚举可以代替以前批量的
public static final a=1;
public static final b=2;
更可以代替更不守规矩的直接使用String "A","B"和int 1,2
代替第2种情况的好处自不待言。statifc final a=1 因为还是不能限制程序员偷懒直接使用int,所以输与enum。而且enum的代码量更少,还可以做其他的扩展。 1.Base
public enum Grade {A,B,C};
Grade.A.toString()="A";
Grade.valueOf("A") returns Grade.A;
toString()方法可以重载,但需要同时重载valueOf()方法 2.通常,枚举都是inline定义的,很少自己单独占一个class文件
public class Downloader { public static enum DownloadStatus { INITIALIZING, IN_PROGRESS, COMPLETE }; }
3.遍历
Grade[] gradeValues = Grade.values( ); for(Grade g : Grade.values( )) { out.pring(g); }4.EnumMap()/EnumSet()
antMessages.put(AntStatus.ERROR, "Error occurred.");5.扩展
复杂还没细看 5.静态导入
简化了工具类的使用,比如StrUtil.isEmpty()可以写成isEmpty()了,而且可以只import指定的函数
另外还可以静态导入Enum,比如Status.A可以写成A了,但也引起了阅读的模糊。 6.其他特性更好的UniCode支持,和JDBC RowSet。 7.对我有用的特性到此为止
Threading, JVM Tools和Swing(但愿ArogUML等有了新的Metal Ocean风格后会漂亮一些),Queue还有Network和Secuirty的小改进没有用得上的场合,
C style的Formater不想用,而可变参数其实在JDK1.4下可以传入的时候就用一个List完成,而不是传入的时候用String...,到了函数里面才把String...转回List 更为具体的JDK1.5更新,在 http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html
J2SE 1.5 in a nutshell 中文版 http://dev.csdn.net/develop/article/24/24440.shtm
相关文章推荐
- JDK1.5使用总结 --《Java 1.5 Tiger: A Developer's Notebook》
- 使用gradle编译:重复jar包导致的错误Error:'...jdk1.8.0\bin\java.exe'' finished with non-zero exit value 2
- Java 1.5 Tiger: A Developer's Notebook -前言
- java基础之jdk1.5的几个新特性及若干类的使用
- 【iOS】Xib的使用与File'Owner总结
- 【java performance】使用移位操作来代替'a / b'操作
- 【iOS】Xib的使用与File'Owner总结
- Android异常总结---E/AndroidRuntime(23439): Caused by: java.lang.IllegalArgumentException: column '_id' d
- 错误:'/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/bin/java'' finished with non-zer
- Java基础学习总结(39)——Log4j 1使用教程
- Android异常总结---E/AndroidRuntime(23439): Caused by: java.lang.IllegalArgumentException: column '_id' d
- 黑马程序员 知识点总结-Java JDK 1.5 新特性和枚举
- 【java performance】使用移位操作代替'a * b'
- JDK 1.5 使用java.util.concurrent 开发并发应用
- Java基础学习总结(39)——Log4j 1使用教程
- java 'keytool' 命令使用
- 'tools.jar' seems to be not in Android Studio classpath. Please ensure JAVA_HOME points to JDK rathe
- How can I install Sun/Oracle's proprietary Java 6/7 JRE or JDK?
- 安装jdk出现问题:Error opening registry key'software\Javasoft\Java Runti
- java基础总结七(自定义类型&方法&集合混合使用)