2012.11.19
关键词:集合
与现代的数据结构类库的常见情况一样,Java集合类库也将接口与实现分离。集合的基本接口是Collection接口。这个接口有两个基本方法:
public interface Collection<E>
{
boolean add(E element);
Iterator<E> iterator;
...........
}
iterator方法用于返回一个实现了Iterator接口的对象。
应该将java迭代器认为是位于两个元素之间。
====================华丽丽的分割线=======================
2012.11.20
关键词:Serializable
今天在项目的工程中同一个包下定义了两个类:public class VirtualNetManagerUtil和public class VNodeInfo implements java.io.Serializable。在VirtualNetManagerUtil中使用了VNodeInfo这个类,但是提示错误,提示我要import VNodeInfo这个类。于是感到十分怀疑,在同一个包下怎么会需要import,直接就可以用才对,研究了半天发现是因为VNodeInfo这个类没有add serial version ID。
于是,搜了一下,为什么要添加一个serial version ID。网上说的原因如下:
a)小幅性能提升,免除JVM运行时对这个值的计算。
b)避免java.io.InvalidClassException,不同的JVM对serialVersionUID的计算方法可能不一样,就算类的定义和序列化后的对象是一致的,也可能从JVM-A里序列化后的对象到达JVM-B后,JVM-B认为 Class Invalid。
c)还有,对象在序列化后,Class定义被改变了,如果显式提供了serialVersionUID,只要serialVersionUID不变,对象仍然能被正常的deserialize。【不过,best practise最好不要这么做】
那么究竟什么是序列化(Serializable)呢?为什么要序列化?什么时候需要序列化?
可以参考这篇博文:http://developer.51cto.com/art/201202/317181.htm