克隆合成对象 时间: 2007-05-29 yycnet.yeah.net yyc译 试图深层复制合成对象时会遇到一个问题。必须假定成员对象中的clone()方法也能依次对自己的句柄进行深层复制,以此类推。这使我们的操作变得复杂。为了能正常实现深层复制,必须对所有类中的代码进行控制,或者至少全面掌握深层复制中需要涉及的类,确保它 发布时间:2012-06-26 作者: 佚名技术 views(183)
传递句柄 时间: 2007-05-29 yycnet.yeah.net yyc译 将句柄传递进入一个方法时,指向的仍然是相同的对象。一个简单的实验可以证明这一点(若执行这个程序时有麻烦,请参考第3章3.1.2小节赋值): //: PassHandles.java// Passing handles aroundpackage c12;public class PassHandles { static void f(PassHandl 发布时间:2012-06-26 作者: 佚名技术 views(192)
java IO练习题 时间: 2007-05-29 yycnet.yeah.net yyc译 (1) 打开一个文本文件,每次读取一行内容。将每行作为一个String读入,并将那个String对象置入一个Vector里。按相反的顺序打印出Vector中的所有行。(2) 修改练习1,使读取那个文件的名字作为一个命令行参数提供。(3) 修改练习2,又打开一个文本文件,以便 发布时间:2012-06-26 作者: 佚名技术 views(1126)
java别名问题 时间: 2007-05-29 yycnet.yeah.net yyc译 别名意味着多个句柄都试图指向同一个对象,就象前面的例子展示的那样。若有人向那个对象里写入一点什么东西,就会产生别名问题。若其他句柄的所有者不希望那个对象改变,恐怕就要失望了。这可用下面这个简单的例子说明: //: Alias1.java// Aliasing two h 发布时间:2012-06-26 作者: 佚名技术 views(307)
用Vector进行深层复制 时间: 2007-05-29 yycnet.yeah.net yyc译 下面让我们复习一下本章早些时候提出的Vector例子。这一次Int2类是可以克隆的,所以能对Vector进行深层复制: //: AddingClone.java// You must go through a few gyrations to// add cloning to your own class.import java.util.*;class Int2 im 发布时间:2012-06-26 作者: 佚名技术 views(224)
制作本地副本 时间: 2007-05-29 yycnet.yeah.net yyc译 稍微总结一下:Java中的所有自变量或参数传递都是通过传递句柄进行的。也就是说,当我们传递一个对象时,实际传递的只是指向位于方法外部的那个对象的一个句柄。所以一旦要对那个句柄进行任何修改,便相当于修改外部对象。此外:■参数传递过程中会自动产 发布时间:2012-06-26 作者: 佚名技术 views(239)
java对RTTI的需要 时间: 2007-05-29 yycnet.yeah.net yyc译 请考虑下面这个熟悉的类结构例子,它利用了多形性。常规类型是Shape类,而特别衍生出来的类型是Circle,Square和Triangle。 这是一个典型的类结构示意图,基础类位于顶部,衍生类向下延展。面向对象编程的基本目标是用大量代码控制基础类型(这里是S 发布时间:2012-06-26 作者: 佚名技术 views(145)
通过序列化进行深层复制(java) 时间: 2007-05-29 yycnet.yeah.net yyc译 若研究一下第10章介绍的那个Java 1.1对象序列化示例,可能发现若在一个对象序列化以后再撤消对它的序列化,或者说进行装配,那么实际经历的正是一个克隆的过程。那么为什么不用序列化进行深层复制呢?下面这个例子通过计算执行时间对比了这 发布时间:2012-06-26 作者: 佚名技术 views(184)
|