知识大全 确保正确的清除

Posted

篇首语:别裁伪体亲风雅,转益多师是汝师。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 确保正确的清除相关的知识,希望对你有一定的参考价值。

  Java不具备象C++的 破坏器 那样的概念 在C++中 一旦破坏(清除)一个对象 就会自动调用破坏器方法 之所以将其省略 大概是由于在Java中只需简单地忘记对象 不需强行破坏它们 垃圾收集器会在必要的时候自动回收内存     垃圾收集器大多数时候都能很好地工作 但在某些情况下 我们的类可能在自己的存在时期采取一些行动 而这些行动要求必须进行明确的清除工作 正如第 章已经指出的那样 我们并不知道垃圾收集器什么时候才会显身 或者说不知它何时会调用 所以一旦希望为一个类清除什么东西 必须写一个特别的方法 明确 专门地来做这件事情 同时 还要让客户程序员知道他们必须调用这个方法 而在所有这一切的后面 就如第 章(违例控制)要详细解释的那样 必须将这样的清除代码置于一个finally从句中 从而防范任何可能出现的违例事件     下面介绍的是一个计算机辅助设计系统的例子 它能在屏幕上描绘图形     //: CADSystem java  // Ensuring proper cleanup  import java util *;    class Shape    Shape(int i)     System out println( Shape constructor );      void cleanup()     System out println( Shape cleanup );         class Circle extends Shape    Circle(int i)     super(i);    System out println( Drawing a Circle );      void cleanup()     System out println( Erasing a Circle );    super cleanup();         class Triangle extends Shape    Triangle(int i)     super(i);    System out println( Drawing a Triangle );      void cleanup()     System out println( Erasing a Triangle );    super cleanup();         class Line extends Shape    private int start end;   Line(int start int end)     super(start);    this start = start;    this end = end;    System out println( Drawing a Line: +        start + + end);      void cleanup()     System out println( Erasing a Line: +        start + + end);    super cleanup();         public class CADSystem extends Shape    private Circle c;   private Triangle t;   private Line[] lines = new Line[ ];   CADSystem(int i)     super(i + );    for(int j = ; j < 10; j++)     lines[j] = new Line(j, j*j);    c = new Circle(1);    t = new Triangle(1);    System.out.println("Combined constructor");      void cleanup()     System.out.println("CADSystem.cleanup()");    t.cleanup();    c.cleanup();    for(int i = 0; i < lines.length; i++)     lines[i].cleanup();    super.cleanup();      public static void main(String[] args)     CADSystem x = new CADSystem(47);    try      // Code and exception handling...     finally      x.cleanup();          ///:~    这个系统中的所有东西都属于某种Shape(几何形状)。wIngWIt.ComShape本身是一种Object(对象),因为它是从根类明确继承的。每个类都重新定义了Shape的cleanup()方法,同时还要用super调用那个方法的基础类版本。尽管对象存在期间调用的所有方法都可负责做一些要求清除的工作,但对于特定的Shape类——Circle(圆)、Triangle(三角形)以及Line(直线),它们都拥有自己的构建器,能完成“作图”(draw)任务。每个类都有它们自己的cleanup()方法,用于将非内存的东西恢复回对象存在之前的景象。    在main()中,可看到两个新关键字:try和finally。我们要到第9章才会向大家正式引荐它们。其中,try关键字指出后面跟随的块(由花括号定界)是一个“警戒区”。也就是说,它会受到特别的待遇。其中一种待遇就是:该警戒区后面跟随的finally从句的代码肯定会得以执行——不管try块到底存不存在(通过违例控制技术,try块可有多种不寻常的应用)。在这里,finally从句的意思是“总是为x调用cleanup(),无论会发生什么事情”。这些关键字将在第9章进行全面、完整的解释。    在自己的清除方法中,必须注意对基础类以及成员对象清除方法的调用顺序——假若一个子对象要以另一个为基础。通常,应采取与C++编译器对它的“破坏器”采取的同样的形式:首先完成与类有关的所有特殊工作(可能要求基础类元素仍然可见),然后调用基础类清除方法,就象这儿演示的那样。    许多情况下,清除可能并不是个问题;只需让垃圾收集器尽它的职责即可。但一旦必须由自己明确清除,就必须特别谨慎,并要求周全的考虑。     1. 垃圾收集的顺序    不能指望自己能确切知道何时会开始垃圾收集。垃圾收集器可能永远不会得到调用。即使得到调用,它也可能以自己愿意的任何顺序回收对象。除此以外,Java 1.0实现的垃圾收集器机制通常不会调用finalize()方法。除内存的回收以外,其他任何东西都最好不要依赖垃圾收集器进行回收。若想明确地清除什么,请制作自己的清除方法,而且不要依赖finalize()。然而正如以前指出的那样,可强迫Java1.1调用所有收尾模块(Finalizer)。 cha138/Article/program/Java/JSP/201311/19773

相关参考

玉米收获机的保管和储存

玉米收获机的正确保管是延长机器使用寿命、确保机器保持稳定工作效率和作业质量的重要环节,对此必须要完成以下几项准备工作,然后将玉米收获机存放在干燥的库房内。1.打开机器上的全部窗口、盖子、护罩。仔细清除

正确选择玉米种子,确保粮食增产增收

玉米是漾濞县种植面积最大的粮食作物之一,是发展畜牧业重要的高产优质饲料,对漾濞县的粮食生产及畜牧业发展起着决定性作用。近年来,由于省外种子企业不断向我县发展,一方面促进了我县玉米种业进步,另一方面也使

正确选择玉米种子,确保粮食增产增收

玉米是漾濞县种植面积最大的粮食作物之一,是发展畜牧业重要的高产优质饲料,对漾濞县的粮食生产及畜牧业发展起着决定性作用。近年来,由于省外种子企业不断向我县发展,一方面促进了我县玉米种业进步,另一方面也使

玉米收获机的保管注意事项

玉米收获机的正确保管是延长机器使用寿命、确保机器保持稳定工作效率和作业质量的重要环节,对此必须要完成以下几项准备工作,然后将玉米收获机存放在干燥的库房内。1.打开机器上的全部窗口、盖子、护罩。仔细清除

玉米收获机的保管注意事项

玉米收获机的正确保管是延长机器使用寿命、确保机器保持稳定工作效率和作业质量的重要环节,对此必须要完成以下几项准备工作,然后将玉米收获机存放在干燥的库房内。1.打开机器上的全部窗口、盖子、护罩。仔细清除

“确保权力正确行使,必须让权力在阳光下运行”。有效惩治腐败,制约权力的关键是

“确保权力正确行使,必须让权力在阳光下运行”。有效惩治腐败,制约权力的关键是_____。A、建立全面的政府监督体系B、深化行政管理体系改革C、建立健全制约和监督机制D、建立权责明确的执法机制答案:C解

为确保演练安全,演练策划小组需要制订演练规则。下列有关演练规则的说法中,正确的有( )

为确保演练安全,演练策划小组需要制订演练规则。下列有关演练规则的说法中,正确的有()。A.所有消息或沟通必须以规范用语作为开头或结束语B.演练人员不得降低本人或公众的安全条件C.不得把假想事故、情景事

为确保演练安全,演练策划小组需要制订演练规则。下列有关演练规则的说法中,正确的有( )

为确保演练安全,演练策划小组需要制订演练规则。下列有关演练规则的说法中,正确的有()。A.所有消息或沟通必须以规范用语作为开头或结束语B.演练人员不得降低本人或公众的安全条件C.不得把假想事故、情景事

你的急救措施正确吗?

你3岁的孩子吃果冻时不慎噎住了,你会作何种选择?A拍打孩子的背。B立即送医院急诊。C想方设法清除噎住的东西。正确处理:拍打孩子的背,对于清除像果冻、年糕、汤团等具有一定粘性的食物所引起的气道阻塞

禁止农机维修过程中的错误做法,确保人机安全

一些农民朋友在维修农机时,由于疏于防患或操作方法不正确,常导致意外事故的发生,对人身造成伤害,造成不应有的后果。因此,在维修农机时一定要谨慎小心,正确掌握操作要领,确保人身和农机安全。(1)用不结实的