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

Java getClass()在基类的构造函数中报告哪个类,java,constructor,Java,Constructor,在Java中,假设在用作基类的类的构造函数中调用的getClass()将提供有关派生类的信息,而不是基类的类的信息是否安全 这似乎有效,但我想这并不一定意味着它是安全的。 例如,如果我有以下两个类: public class Parent { public Parent() { System.out.println(getClass().getName()); } } 以及: 当我在派生类中运行main()方法时,它会打印:Derived(这正是我所希望的)。但

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

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

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


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

getClass
Object
的方法之一:

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


因此,是的,它将始终返回
派生的

我将使用它记录日志..从java doc API返回对象的运行时类。该类对象是由所表示类的静态同步方法锁定的对象。至于它是否“安全”,我想说这在很大程度上取决于您计划如何使用它。你真的只是把名字记下来了吗?从长远来看,这似乎不是非常有用,但是是的,这将是“安全的”,并将打印出在运行时实例化的实际类名。
public class Derived extends Parent {
    public Derived() {
        super();
    }

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