因为类中持有一个数据库连接(成员变量),本类还提供了一个关闭这个数据库连接的API。此类被其他人调用,但创建一个对象后,程序结束前他们可能会忘记调用关闭数据库连接的API。如果我在类中的finalize中关闭类持有的数据库连接,是否正确?

解决方案 »

  1.   

    jvm规范不规定必须调用finalize方法。
    你应该强迫其他人调用关闭连接的方法,或者费点时间编写一个完全代替执行数据库操作的API。
      

  2.   

    不要这么做
    JAVA不是C,finalize方法并不是在你当前类不用的时候马上调用的
    这个方法是等到GC销毁类的时候才调用的
    一般JAVA的做法是留一个关闭方法给用户去调用
    或者你想做的漂亮一点的,自己写一个计数器,当类没有引用的时候关闭连接记住! JAVA没有析构函数!!
      

  3.   

    用完之后是应该关闭的。jdk中的api都是这么设计的
      

  4.   

    数据库调用肯定地捕获异常的。在异常处理时加上finaly块,在finaly块中释放连接即可。不应该显示的调用finalize