finalize的作用 您所在的位置:网站首页 finalize调用的时机不确定 finalize的作用

finalize的作用

2024-04-24 12:25| 来源: 网络整理| 查看: 265

  静态方法被null调用,为何不报NullPointerException?

解释:

原因就是,这里调用的方法是类中声明的静态方法,也就是类方法,类方法是属于类的。通常使用类作为调用者来调用类方法,但我们也可以使用对象来调用类方法,其效果与通过类调用完全一样。当使用实例来调用类方法时,实际上依然是委托给该类来访问类成员,因此即使某个实例为null,它也可以访问它所属类的的类成员,而不发生空指针异常。

 

public class FinalizeTest { public static FinalizeTest finalizeTest; @Override protected void finalize() throws Throwable { System.out.println("finalized"); finalizeTest=this; } public static void main(String[] args) { FinalizeTest f = new FinalizeTest(); System.out.println("first print "+f); f = null; System.gc(); System.out.println("second print "+f); // System.out.println(f.finalizeTest); System.out.println(f.name); }}

结果可能是 也可能是别的

first print FinalizeTest@685f4c2esecond print nullnullfinalized

 

 

加入以下代码System.gc();try{Thread.currentThread().sleep(1000);}catch(Exception ex){ ex.printStackTrace();}

结果是

first print FinalizeTest@685f4c2efinalizedsecond print nullFinalizeTest@685f4c2e



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有