每一个Java类都有一个Class对象
通过Class.forName,SomeClass.class,object.getClass等方法可以获得类的class对象
获得类的class对象有以下用处
- 检查类型。class对象有isInstance方法可以检查对象是否属于这个类或其子类
- 创建对象。class对象有newInstance方法可以创建对象,但是要求对象有无参构造函数。这就要求设计的时候将构造对象的工作放在接口中,而不是构造函数中
- 获取其他一些关于class的信息,比如className之类的
顺便提一下泛型。Java中带泛型的对象和raw的对象其实是一样的。只是带泛型的对象会在使用的时候得到编译器的保证。所以Class<?>和Class其实没什么区别,Class<?>只是在假如泛型语法后,兼容Class的方式