十六、反射
public class ReflectDemo { /** * @param args * @author MYZ * 在面向对象的世界里,万事万物皆对象,类是java.lang.Class类的实例对象 */ public static void main(String[] args) { // TODO Auto-generated method stub Cat c1=new Cat();//c1是Cat类的一个实例对象 //Cat这个类,也是一个实例对象,是java.lang.Class类的实例对象,我们称为该类的类类型 //1.第一种表示方式 Class clazz1=Cat.class; //2.第二种表示方式 Class clazz2=c1.getClass(); System.out.println(clazz1==clazz2);//true /** * ,一个类只可能是Class类的一个实例对象,所有表示方法表示的都是同一个,而且都表示Cat类的类类型 */ //3.第三种表示方式 try { Class clazz3=Class.forName("com.myz.demo.Cat"); System.out.println(clazz2==clazz3);//true } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } //4.通过类类型创建对象实例 try { Cat cat2=(Cat) clazz1.newInstance();//调用无参构造方法 } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class Cat{}
其实通过反射,我们能知道一个类有哪些方法,哪些字段