java - 我怎样才能调用 finalize()

标签 java protected finalize

在下面的代码中,我得到了输出 Hello。谁能解释为什么编译器没有报告错误,因为我在类和继承链之外调用了一个 protected 函数。

package sampleproject;

public class SampleProject 
{
    public static void main(String[] args) 
    {
        Sample s=new Sample();
        s.finalize();
    }
}

class Sample
{
    @Override
    protected void finalize()
    {
        System.out.println("Hello");
    }
}

谢谢。

最佳答案

protected 范围包括,以及类和子类。您的两个类都属于同一个包。

顺便说一句,我希望你不打算调用 finalize()。这应该留给垃圾收集器(并且不依赖于任何一个!)。参见 this answer了解更多信息。

关于java - 我怎样才能调用 finalize(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12835278/

相关文章:

c# - protected 内部成员的可访问性不一致

java - 为什么java抽象类中需要Protected构造函数

vb.net - VB.NET 中自动实现的属性带有 protected setter?

java - Java 中的终结队列

VB.NET - 实现 IDisposable 时是否应该添加 Finalize 方法?

java - 在 setter/getter 中创建新对象,确保它不位于虚拟机中

java - $CLASSPATH 和 -cp 与 Java

java - 如何灵活使用泛型对象?

java - 我们是否需要检查 java 8 中的 Stream 是否为空且不迭代

java - 使用 Hibernate Schema Updater 创建表时出错