面向对象的世界里,万事万物皆对象。
1)类是谁的对象呢?
类是对象,类是java.lang.Class类的实例对象。
2)这个对象如何表示呢?
package com.reflect;public class ClassDemo1 {public static void main(String[] args) {//Foo的对象如何表示Foo foo1=new Foo();//f001就表示出来了//Foo这个类,也是一共实例对象,Class类的实例对象,如何表示呢?//任何一共类都是Class类的实例对象,这个实例对象有三种表示方式//第一种表示方式--》实际告诉我们,任何一共类都有一个隐含的静态成员变量classClass c1=Foo.class;//第二种表达方式 已知该类的对象,通过getClass方法Class c2=foo1.getClass();//官网c1,c2表示了Foo类的类类型(class type)//万事万物皆对象,//类也是对象,是Class类的实例对象,//这个对象我们称为类的类类型//不管c1 还是 c2 都代表了Foo类的类类型,一共类只可能是Class类的一共实例对象System.out.println(c1==c2);//第三种表达方式Class c3=null;try {c3=Class.forName("com.reflect.Foo");} catch (ClassNotFoundException e) {e.printStackTrace();}System.out.println(c2==c3);//我们完全可以通过类的类类型创建该类的实例对象-->,通过c1或c2或c3创建Foo的实例try {Foo foo2=(Foo)c1.newInstance(); //需要有无参数的构造方法 foo2.print();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}} class Foo{void print(){} }