- 博客(8)
- 收藏
- 关注
原创 Externalizable 的替代方法
如果我们不是特别想要实现 Externalizable 接口,那么就还有另一种方法。我们可以实现Serializable 接口,并添加(注意我说的是“添加”,而非“重载”或者“实现”)名为writeObject()和 readObject()的方法。这样一旦对象被序列化或者被反序列化,就会自动地分别调用这两个方法。也就是说,只要我们提供了这两个方法,就会使用它们而不是缺省的序列化机
2013-08-26 11:57:06
442
原创 transient(瞬时)关键字
当我们序列化进行控制时,可能存在某个特定子对象不想让 Java 的序列化机制自动保存与恢复。如果子对象表示的是我们不想序列化的敏感信息(如密码),通常就会面临这种情况。即使对象中的这些信息是“private”(私有)属性,一经序列化处理,人们就可以通过读取文件,或者拦截网络传输的方式来访问到它。有一种防止对象的敏感部分被序列化的办法,就是将我们自己的类实现为 Externaliza
2013-08-26 11:55:05
503
原创 寻找类
读者或许会奇怪将一个对象从它的序列化状态中恢复出来有哪些工作是必须的呢?举个例子来说,假如我们将一个对象序列化,并通过网络将其作为文件传送给另一台计算机。那么,另一台计算机上的程序可以只利用该文件内容来重组这个对象吗?回答这个问题的最好方法就是做一个实验。下面这个文件位于本章的子目录下://: c12:Alien.java// A serializable cl
2013-08-26 11:52:16
440
原创 基本类型的容器
容器类只能保存对象的引用。而数组可以像保存对象的引用一样,直接保存基本类型。在容器中可以使用“包装”类,例如 Integer,Double 等,以代替基本类型的值。但是相对于基本类型,包装类使用起来很笨拙。此外,与包装过的基本类型的容器相比,创建与访问一个基本类型的数组效率更高。当然,如果你在处理基本类型数据,而又需要容器的灵活性,以便在需要更多空间的时候能够自动扩展,就应该使
2013-08-24 14:16:58
436
原创 数组是第一级对象
无论使用哪种数组,数组标识符其实只是一个引用,指向在堆(heap)中创建的一个真实对象,这个(数组)对象用以保存指向其他对象的引用。可以作为数组初始化语法的一部分隐式地创建此对象,或者用 new 表达式显式地创建。只读成员 length 是数组对象的一部分(事实上,这是唯一一个可以访问的属性或方法),表示此数组对象可以存储多少元素。’[]’语法是访问数组对象唯一的方式。
2013-08-24 14:16:09
545
原创 初始化基类
由于现在涉及基类和导出类这两个类,而不是只有一个类,所以要想象导出类所产生的结果对象,会有点令人迷惑。从外部来看,它就像是一个与基类具有相同接口的新类,或许还会有一些额外的方法和数据成员。但继承并不只是复制基类的接口。当你创建了一个导出类的对象时,该对象包含了一个基类的子对象(subobject)。这个子对象与你用基类直接创建的对象是一样的。二者区别在于,后者来自于外部,而基类的子
2013-08-22 16:46:23
823
原创 继承(inheritance)语法
继承是所有 OOP 语言和 Java 语言的组成部分。当你在创建一个类时,你总是在继承,因此,除非你已明确指出要从其他类中继承,否则你就是在隐式地从 Java 的标准根源类 object进行继承。组合的语法比较平实,但要执行继承,其语法却要采用截然不同的形式。在继承过程中,你需要先声明:“新类与旧类相似。”通常,你首先给类确定一个名称,但在书写类主体的左边花括号之前,应先写下关
2013-08-22 16:45:12
570
原创 组合(composition)语法
到目前为止,本书已多次使用组合技术。你仅需将对象引用置于新类之中即可。例如,假设你需要某个对象,它需要具有多个 string 对象、两三个基本类型数据、以及另一个类的对象。对于非基本类型的对象,你必须将其引用置于新的类中,而现在,你只需直接定义基本类型数据://: c06:SprinklerSystem.java// Composition for code reuse
2013-08-22 16:44:08
622
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人