第一种:通过 类名.Class 方式
Class<?> class1=Student.class;
通过类名.Class的方式就可以创建了一个Class类的对象。这种方式还透露了一个信息:任何一个类中隐藏了一个静态的成员变量class。
第二种:通过该类的实例对象的getClass()方法获取Class类的实例对象
1.创建Student类的对象student
2.Student student=new Student();
3.利用该类对象的getClass方法获取Class类的实例
4 .Class<?> class2=student.getClass();
Q:getClass()这个方法又是从哪个地方冒出来的呢?
A:如果一个类没有明确指明继承哪个类,就会默认继承Object。在Object类中有个:public final native Class<?> getClass();方法。
说明:
1、student代表的是Student类的实例对象,class1与class2都代表的是Class类的实例对象。
官方对class1、class2的解释:
class1和class2都表示了Student类的类类型(class type)。
Student类的对象是student。
Student类的Class对象是:class1,class2。(Student类的类类型)
第三种方式创建Student类的类类型:通过forName(“全限定类名”)
1 Class class3=null;
2 try {
3 class3=Class.forName("com.xxj.Student");//加类的全称
4 } catch (ClassNotFoundException e) {
5 e.printStackTrace();
6 }
com.xxj.Student表示完整的类的全名包名.类名
因为这里需要输入类的名称,但是防止输入的错误,所以这里面有ClassNotFoundException异常。