编译时类型和运行时类型

程序再运行时还是可能受到内部传入的对象,该办法的编译时类型为Object,然而程序有须要调用该对象的运行时类型的办法。为了解决这些问题,程序须要在运行时发现对象和类的实在信息。然而,如果编译时根本无法预知对象和类属于哪些类,程序只能依附运行时信息来发现该对象和类的实在信息,此时就必须应用到反射了

Java反射API

1.Class类:反射的外围类,能够获取类的属性,办法等信息
2.Field类:Java.lang.reflec包中的类,示意类的成员变量,能够用来获取和设置类之中的属性值。
3.Merhod类:Java.lang.reflec包中的类,示意类的办法,它能够用来获取类中的办法信息或者执行办法
4.Constructor类:Java.lang.reflec包中的类,示意类的构造方法

获取Class对象的3种办法

调用某个对象的getClass()办法
Person p=new Person();
Class clazz=p.getClass();
调用某个类的class属性来获取该类对应的Class对象
Class clazz=Person.class;
调用某个类中的forName()静态方法(最平安/性能最好)
Class clazz=Class.forName("类的原门路");(最罕用)
当咱们获取了想要操作的类的class对象后,能够通过Class类中的办法获取并查看该类中的办法和属性