是在JVM加载A类时,还是在调用A.class时创建的Class对象?

Ton*_*ony 7 java jvm class synchronize

据我所知,每个班级都有一个Class对象.我使用同步时有一种情况,例如:

public class A {
    public static void main(String... args){
        synchronize(A.class){
            //do something...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这将锁定AClass对象,对不对?这个Class对象什么时候创建的?它是在JVM加载A类时还是在调用时创建的A.class?我在JLS中找不到详细信息,有人可以提供有关它的链接吗?

Pet*_*rey 7

这将锁定A的Class对象,对吗?

是.

我的问题是什么时候创建了这个Class对象?它是在JVM加载A类或我调用A.class时创建的?

当ClassLoader加载它时,它返回一个Class对象.

我无法在JLS中找到详细信息,有人可以提供有关它的链接,谢谢.

我建议读ClassLoader.loadClass()的javadoc