《Java 5.0 Tiger程序高手秘笈》读书笔记
一直以来,对于java 5的新特性的了解和学习都是从网上东拼西凑来的,一知半解不够全面,但又舍不得银子买相关的书,最近借了本o'reilly的专门讲这方面的书,薄薄的一本就卖28元,自个买着实不划算,但毕竟借的要还,写篇笔记一是方便查阅二来加深印象注:以下仅摘录部分Java 5的新特性介绍
在单线程环境下用StringBuilder替换StringBuffer,StringBuilder具有StringBuffer所有方法
parameterized Type作为参数时,如果要接受所有类型的参数,用通配符<?>而不用<Object>,比如说方法
public void printList(List<?> list, PrintStream out) throws IOException { for (Iterator<?> i = list.iterator(); i.hasNext();) { out.println(i.next().toString()); }}
现在你的语法已经明示你要表达的--任何类型都是可接受的,并且没有unchecked警告,
但请注意不能用List<Object>来处理同样的问题
举例来说,如果你声明了一个List<Float> floatList = new LikedList<Float>();
但是试图这样使用:List<Object> objList = floatList; // 不合法的,只作展示用
这样就会导致 objList.add("How are you doing?");,完这样就没有类型安全可言了Enum没有public 的constructorr
Enum值是public, static 与final的,不需显示说明
Enum可以用==或equals()来比较,equals用在Enum的Map与Enum的Set中,后面会有说明
Enum实现了java.lang.Comparable
Enum如果你变更了toString()方法,必须同时变更valueOf()方法,z这来两个方法应该永远是对方的镜像
Enum中定义了ordinal(),返回每个enumerated 值的位置
Inline声明Enum,如果你的enum只是会被用到一次,完全可以定义在类里面:
public class Downloader { public enum DownloadStatus { INITIALIZING, IN_PROGRESS, COMPLETE };}
// 返回一个由指定类型中所有元素所组成的EnumSetpublic static EnumSet allOf(Class elementType); // 返回与指定set类型相同的EnumSet,但包含所有指定set没有的值public static EnumSet complementOf(EnumSet e);// 返回指定collection 组成的新EnumSetpublic static EnumSet copyOf(Collection c);//返回没有人和值的新EnumSetpublic static EnumSet noneOf(Class elementType);// 使用指定元素创建EnumSet的各种不同methodpublic static EnumSet of(E e[, E e2, E e3, E e4, E e5]);// 可变参数版本public static EnumSet of (E...e);
页:
[1]