首页 > 编程语言 >《Java编程思想第四版》学习笔记13

《Java编程思想第四版》学习笔记13

时间:2023-08-15 17:04:33浏览次数:40  
标签:13 Java finalize Characteristic void 第四版 println class out

//: Frog.java
// Testing finalize with inheritance
class DoBaseFinalization {
    public static boolean flag = false;
}
class Characteristic {
    String s;
    Characteristic(String c) {
        s = c;
        out.println(
                "Creating Characteristic " + s);
    }
    protected void finalize() {
        out.println(
                "finalizing Characteristic " + s);
    }
}
class LivingCreature {
    Characteristic p =
            new Characteristic("is alive");
    LivingCreature() {
        out.println("LivingCreature()");
    }
    protected void finalize() {
        out.println(
                "LivingCreature finalize");
// Call base-class version LAST!
        if(DoBaseFinalization.flag)
            try {
                super.finalize();
            } catch(Throwable t) {}
    }
}
class Animal extends LivingCreature {
    Characteristic p =
            new Characteristic("has heart");
    Animal() {
        out.println("Animal()");
    }
    protected void finalize() {
        out.println("Animal finalize");
        if(DoBaseFinalization.flag)
            try {
                super.finalize();
            } catch(Throwable t) {}
    }
}
class Amphibian extends Animal {
    Characteristic p =
            new Characteristic("can live in water");
    Amphibian() {
        out.println("Amphibian()");
    }
    protected void finalize() {
        out.println("Amphibian finalize");
        if(DoBaseFinalization.flag)
            try {
                super.finalize();
            } catch(Throwable t) {}
    }
}
public class Frog extends Amphibian {
    Frog() {
        out.println("Frog()");
    }
    protected void finalize() {
        out.println("Frog finalize");
        if(DoBaseFinalization.flag)
            try {
                super.finalize();
            } catch(Throwable t) {}
    }
    public static void main(String[] args) {
        if(args.length != 0 &&
                args[0].equals("finalize"))
            DoBaseFinalization.flag = true;
        else
            out.println("not finalizing bases");
        new Frog(); // Instantly becomes garbage
        out.println("bye!");
// Must do this to guarantee that all
// finalizers will be called:
        System.runFinalizersOnExit(true);
    }
} ///:~

P.201的这段代码中,System.runFinalizersOnExit(true)已废弃,有没有替代函数可用,网上找了半天无果,哪位大神愿指点一二。谢谢!

标签:13,Java,finalize,Characteristic,void,第四版,println,class,out
From: https://blog.51cto.com/u_16183536/7090588

相关文章

  • P1355 神秘大三角
    Smiling&Weeping----相同的夜让相同的树林泛白。彼时,我们也不再相似如初。题目链接:P1355神秘大三角-洛谷|计算机科学教育新生态(luogu.com.cn)题目:#神秘大三角##题目描述判断一个点与已知三角形的位置关系。##输入格式前三行,......
  • 世微AP2813 平均电流双路降压恒流驱动器 LED储能电源驱动指示灯IC 可恒流可爆闪 可双
    产品描述AP2813是一款双路降压恒流驱动器,高效率、外围简单、内置功率管,适用于5-80V输入的高精度降压LED恒流驱动芯片。内置功率管输出最大功率可达12W,最大电流1.2A。AP2813一路直亮,另外一路通过MODE1切换全亮,爆闪。AP2813工作频率固定在150KHZ左右,同时内置抖频电路,可......
  • i7 13700h和i7 11800h性能差距 i713700h和11800h评测
    i713700h采用10纳米制作工艺最高睿频5GHz十四核心二十线程三级缓存24MB热设计功耗(TDP)45W支持最大内存64GB内存类型DDR43200MHzDDR55200MHz集成显卡IntelIrisXeGra选i713700H还是i711800h这些点很重要看过你就懂了 http://www.adiannao.cn/dyi7-11800H配......
  • JavaScript 如何封装一些常见的函数来提高工作效率
    前言为什么要封装函数JavaScript封装函数的主要目的是为了保护代码的安全性和可维护性。封装可以隐藏实现细节:将函数内部的实现细节封装起来,只暴露给外部必要的接口,可以使代码更加安全,防止意外修改或者滥用。封装可以提高代码的可维护性:将功能模块封装成函数,可以使代码更加模......
  • Java学习笔记(十)
    第7章 面向对象(下)7.1 静态的1、static:静态的2、什么是静态的?和对象无关的,不会因为对象的不同而不同,即所有对象都一样的。换句话说,和对象无关。动态的,根据对象的不同而不同,和对象有关,由对象动态决定。3、static这个关键字用在哪里?(1)成员变量前面:静态变量(2)成员方法前面:静态......
  • 怎样快速学好Java?
    怎样才能快速学好Java编程,快速接手项目开发?给大家分享6点学习经验: 1、书籍是最好的知识载体,也是进阶Java编程大神的必须工具,一定要看书 现在学习Java变得比以前容易多了,然而我要说的是,Java虽然变得越来越容易学,然而那只代表入门容易,并不代表这门编程技术就真的变简单了。如果仅仅......
  • Java并发编程:实现高效、线程安全的多线程应用
    Java并发编程是开发高效、可扩展的多线程应用的关键。合理地利用多线程可以提高程序的性能和响应性,但同时也会引入线程安全的问题。本文将介绍Java并发编程的关键技巧,帮助读者实现高效、线程安全的多线程应用。 线程安全的数据结构和类Java提供了许多线程安全的数据结构和类,如Co......
  • 编译greenDao的时候出现KaptExecution:java.lang.reflect.InvocationTargetException
    一、概述在编译greendao的时候出现了以下异常。Executionfailedfortask':common_base:kaptDebugKotlin'.>Afailureoccurredwhileexecutingorg.jetbrains.kotlin.gradle.internal.KaptExecution>java.lang.reflect.InvocationTargetException(noerrormes......
  • Programming abstractions in C阅读笔记p111-p113: boilerplate
    《ProgrammingAbstractionsInC》学习第47天,p111-p113,总结如下:一、技术总结1.boilerplate/**File:random.h*Version:1.0*LastmodifiedonFriJul2216:44:361994byeroberts*-----------------------------------------------------*Thisinterfacepr......
  • Programming abstractions in C阅读笔记p111-p113: boilerplate
    《ProgrammingAbstractionsInC》学习第47天,p111-p113,总结如下:一、技术总结1.boilerplate/**File:random.h*Version:1.0*LastmodifiedonFriJul2216:44:361994byeroberts*-----------------------------------------------------*Thisinterfaceprovi......