java 学习笔记

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值