### class
class本身是一种数据类型(Type),class/interface的数据类型是Class,JVM为每个加载的class创建唯一的Class实例。
![](http://blog.liufei1988.com/cbbb8ec847eb41577a28f0a25d49b262)
JVM持有的每个Class实例都指向一个数据类型(class或interface)
![](http://blog.liufei1988.com/a9044d7896981b0bb6f36a8bcf06b25e)
***Class实例包含该class的所有信息***,通过Class实例获取class信息的方法称为**反射(Reflection)**
![](http://blog.liufei1988.com/1fcf7fa585faa6047eb989e674723223)
获取一个class的Class实例:
* Class cls = String.class;
* Class cls = "str".getClass();
* Class cls = Class.forName("java.lang.String");
注意Class的==比较和`instanceof`的区别。
从Class实例获取class信息:
* getName()
* getSimpleName()
* getPackage()
从Class实例判断class类型:
* isInterface()
* isEnum()
* isArray()
* isPrimitive()
创建class实例:
cls.newInstance()
JVM总是动态加载class,可以在运行期根据条件控制加载class。