getClass() 在基类的构造函数中报告哪个类

2024-01-03

在 Java 中,可以安全地假设getClass()在用作基类的类的构造函数中调用将提供有关派生类的信息,而不是基类的类的信息?

它似乎有效,但我想这并不一定意味着它是安全的。 例如,如果我有以下两个类:

public class Parent {
    public Parent() {
        System.out.println(getClass().getName());
    }
}

And:

public class Derived extends Parent {
    public Derived() {
        super();
    }

    public static void main(String... args) {
        new Derived();
    }
}

当我运行main()它打印的派生类中的方法:Derived(这就是我所希望的)。但我可以依赖 JVM 上的这种行为吗?


getClass是其中之一Object的方法并返回runtime类的this http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#getClass%28%29:

返回此对象的运行时类。返回的 Class 对象是由所表示的类的静态同步方法锁定的对象。

所以是的,它总会回来Derived.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

getClass() 在基类的构造函数中报告哪个类 的相关文章

随机推荐