编译时类型和运行时类型
程序再运行时还是可能受到外部传入的对象,该方法的编译时类型为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类中的方法获取并查看该类中的方法和属性
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。