70.反射-Class类和class实例

Class类:

用来描述类或者借口的类型,描述类的类

Class类的实例:

在JVM中的一份份字节码,Class实例表示在JVM中的类或者接口,枚举是一种特殊的类,注解是一种特殊的接口.

/*
当程序第一次使用某一个java.util.Date类的时候,就会把该类的字节码对象加载进JVM并创建出一个Class对象.

此时的Class对象就表示java.utilDate的字节码.

Class类就可以表示N个类的字节码对象,问题,到底怎么区分Class类此时表示的那一个类的字节码呢,
为了解决该问题,Class类的设计者提供了泛型-->Class

*/
java.lang.String类的字节码类型:Class;

java.util.Date类的字节码类型:Class;

java.util.ArrayList类的字节码类型:Class;

如何创建Class对象,如何来表示一个字节码对象?

/*
 *需求:获取java.util.Date类的字节码对象
 * 方式1:使用class属性
 * 方式2:通过对象的getClass方法来获取,getClass是Object类中的方法
 * 方式3:通过Class类中的静态方法forName(String className);
 */
    //1.
    Class clz1 = com.java520.class01.Person.class;
    System.out.println(clz1);
    
    //2.
    com.java520.class01.Person p = new com.java520.class01.Person();
    System.out.println(p.getClass());
    
    //3.
    Class clz3 = Class.forName("java.util.Date");
    System.out.println(clz3);
    
//注意!同一个类在JVM中只存在一份字节码对象,也就是说上述ckl1==p
以后最多使用的是第三种,在 框架中大量使用



你可能感兴趣的:(70.反射-Class类和class实例)