17

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

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

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

和:

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

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

当我main()在 Derived 类中运行该方法时,它会打印:(Derived这是我所希望的)。但是我可以在 JVM 中依赖这种行为吗?

4

1 回答 1

15

getClassObject的方法之一,并返回 的运行时this

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

所以是的,它总是会返回Derived

于 2012-09-28T10:50:29.247 回答