面向对象的世界里,万事万物皆对象。
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类的实例对象,这个实例对象有三种表示方式 //第一种表示方式--》实际告诉我们,任何一共类都有一个隐含的静态成员变量class Class 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() { } }