Class类:
用来描述类或者借口的类型,描述类的类
Class类的实例:
在JVM中的一份份字节码,Class实例表示在JVM中的类或者接口,枚举是一种特殊的类,注解是一种特殊的接口.
/*
当程序第一次使用某一个java.util.Date类的时候,就会把该类的字节码对象加载进JVM并创建出一个Class对象.
此时的Class对象就表示java.utilDate的字节码.
Class类就可以表示N个类的字节码对象,问题,到底怎么区分Class类此时表示的那一个类的字节码呢,
为了解决该问题,Class类的设计者提供了泛型-->Class<T>
*/
java.lang.String类的字节码类型:Class<java.lang.String>;
java.util.Date类的字节码类型:Class<java.util.Date>;
java.util.ArrayList类的字节码类型:Class<java.util.ArrayList>;
如何创建Class对象,如何来表示一个字节码对象?
/*
*需求:获取java.util.Date类的字节码对象
* 方式1:使用class属性
* 方式2:通过对象的getClass方法来获取,getClass是Object类中的方法
* 方式3:通过Class类中的静态方法forName(String className);
*/
//1.
Class<com.java520.class01.Person> 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
以后最多使用的是第三种,在 框架中大量使用