pengpenglin
人,必须选择一种生活方式并有勇气坚持下去
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 262, comments - 221, trackbacks - 0
【原】RSS工具开发手记(07)---Informa的impl.basic包
在Informa的impl.basic包内,有一个特殊的类:
IdGenerator。它负责为其他所有需要标识的对象提供一个全局唯一ID。这个类本身的实现很简单,全部代码如下
import
java.util.Random;
/** */
/**
* Identity generator implemented as singleton for generating positive
* random integers to be used as identify uniquely news channels,
* items.
*
*
@author
Niko Schmuck (niko@nava.de)
*/
import
de.nava.informa.core.IdGeneratorIF;
public
class
IdGenerator
implements
IdGeneratorIF
{
private
static
IdGenerator instance;
/** */
/**
used for creating unique item IDs.
*/
private
static
transient
Random rand;
private
IdGenerator()
{
rand
=
new
Random(
System.currentTimeMillis()
);
}
public
static
IdGenerator getInstance()
{
if
(instance
==
null
)
{
instance
=
new
IdGenerator();
}
return
instance;
}
public
long
getId()
{
return 100000l +
Math.abs(rand.nextInt());
}
}
这个ID生成类采用了系统当前时间作为随即数产生的种子,这个并不难理解。但是有一个地方需要我们注意的就是关键字transient的使用。这个关键的作用是告诉编译器假设该类的对象被序列化了,这个值不需要被保存。因为它是“瞬时”的。
这一点和前面我们见到的其它类不同,在impl.basic包下,几乎90%的类都会有这样类似的一句话
private
static
final
long
serialVersionUID
=
-
8346101720187629760L
;
为什么要加这句话呢?这是因为当我们序列化对象后,对象所属的类仍然可能被改变(例如增加,删除了一个变量),如果我们先序列化后再反序列化会发现编译器报错。此时我们需要加上这个“序列化版本UID”---就好比类的对象当前状态的快照一样。当以后恢复后编译器会自动反序列化对象,同时加上新的变化。
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2009-12-23 00:03
Paul Lin
阅读(1328)
评论(0)
编辑
收藏
所属分类:
J2SE
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
相关文章:
【Java基础专题】IO与文件读写---优化搜索程序(01)
【Java基础专题】IO与文件读写---DirectoryWalker和FileFilter的复杂条件使用
【Java基础专题】IO与文件读写---使用DirectoryWalker和FileFilterUtils进行搜索
【Java基础专题】IO与文件读写---慎用FileUtils.writeLines(File, Collection)方法
TSS上关于JDBC操作优化的Tips总结
【Java基础专题】IO与文件读写---对同步/异步和阻塞/非阻塞的理解
【Java基础专题】IO与文件读写---同步/异步与阻塞/非阻塞的区别(转)
【Java基础专题】IO与文件读写---使用Apache commons IO包进行资源遍历
【Java基础专题】IO与文件读写---使用Apache commons IO过滤文件和目录
【Java基础专题】IO与文件读写---使用Apache commons IO操纵底层读写
<
2009年12月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(21)
给我留言
查看公开留言
查看私人留言
随笔分类
J2EE 框架(9)
J2EE基础(4)
J2SE(43)
Java 工具(5)
Oracle Concept(4)
Oracle SQL/PLSQL(9)
Oracle 开发(13)
Oracle 管理(4)
Oracle 调优
Oracle 错误诊断
RoR(19)
UML(3)
Unix / Linux(13)
Web基础(19)
其它技术(7)
感悟(3)
杂项(7)
架构与性能(8)
模式与重构(19)
灌水(8)
电影与音乐(16)
走过的路(1)
软件过程与软件方法(3)
阳光户外(2)
项目管理(36)
随笔档案
2012年2月 (3)
2011年11月 (4)
2011年10月 (1)
2011年9月 (2)
2011年8月 (2)
2011年7月 (5)
2011年6月 (3)
2011年5月 (1)
2011年4月 (1)
2011年3月 (3)
2011年1月 (1)
2010年12月 (1)
2010年11月 (5)
2010年10月 (3)
2010年9月 (1)
2010年7月 (1)
2010年6月 (1)
2010年5月 (4)
2010年4月 (9)
2010年3月 (19)
2010年2月 (8)
2010年1月 (3)
2009年12月 (34)
2009年11月 (1)
2009年10月 (2)
2009年7月 (4)
2009年6月 (5)
2009年5月 (3)
2009年4月 (2)
2009年3月 (1)
2009年2月 (5)
2009年1月 (5)
2008年12月 (13)
2008年11月 (4)
2008年10月 (1)
2008年9月 (6)
2008年8月 (5)
2008年7月 (3)
2008年6月 (31)
2008年5月 (10)
2008年4月 (9)
2008年3月 (7)
2008年2月 (4)
2008年1月 (19)
BlogJava热点博客
BeanSoft
Jack.Wang
如坐春风
诗特林
郑晖
银河使者
阿密果
隔叶黄莺
好友博客
无羽苍鹰
搜索
最新评论
1. re: 【Java基础专题】编码与乱码(01)---编码基础[未登录]
666666666666666666666这几天正在做个类似工程编码出现错误
--李
2. re: 【Java基础专题】IO与文件读写---使用Apache commons IO简化文件读写
不错
--阿斯兰
3. re: 【Java基础专题】编码与乱码(03)----String的toCharArray()方法
多谢分享
--thx
4. re: 【Java基础专题】编码与乱码(05)---GBK与UTF-8之间的转换
评论内容较长,点击标题查看
--karl
5. re: 【Java基础专题】编码与乱码(01)---编码基础[未登录]
谢谢,帮了我大忙!
--小龙
阅读排行榜
1. Oracle中如何插入特殊字符:& 和 ' (多种解决方案)(48373)
2. getOutputStream() has already been called for this response的解决方法(43328)
3. 【Java基础专题】编码与乱码(05)---GBK与UTF-8之间的转换(36966)
4. 360安全卫士误删audiosrv.dll文件造成系统无声的解决方案(21211)
5. Java中读取字节流并按指定编码转换成字符串的方法(17301)
评论排行榜
1. 360安全卫士误删audiosrv.dll文件造成系统无声的解决方案(33)
2. 【原】Oracle开发专题之:时间运算(11)
3. 【Java基础专题】编码与乱码(05)---GBK与UTF-8之间的转换(11)
4. getOutputStream() has already been called for this response的解决方法(10)
5. 【原】Oracle开发专题之:分析函数(OVER)(8)