java如何.class属性返回类对象

时间:2014-12-19 04:37:39

标签: java

/*
 * A class for creating object using .class property
 */
class Customer{

}


public class MyApp {

    public static void main(String[] args) {

        // Can someone explain how internally it return Class object
         Class customerClass = Customer.class;

         System.out.println("Class : " + customerClass);
    }
}

2 个答案:

答案 0 :(得分:2)

使用javap -c MyApp,您将看到第一个字节码是什么:

$ javap -c MyApp
Compiled from "MyApp.java"
public class MyApp {
...
  public static void main(java.lang.String[]);
    Code:
       0: ldc_w         #2                  // class Customer
...

换句话说,Customer.class被编译为ldc(加载常量)字节码指令,它引用常量池中的Customer类。

答案 1 :(得分:0)

JLS-4.3.2. The Class Object说(部分)

  

方法getClass返回表示对象类的Class对象。

     

每种引用类型都存在Class对象。例如,它可用于发现类的完全限定名称,其成员,直接超类以及它实现的任何接口。

     

getClass方法调用表达式的类型为Class<? extends |T|>,其中TgetClass搜索的类(§15.12.1)。

     

声明为synchronized(§8.4.3.6)的类方法在与类的Class对象关联的监视器上同步。