简单理解Java反射

是什么

反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法; 并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为Java 语言的反射机制。

为什么

在程序中,对象的类型往往以两种形式呈现,即编译时类型运行时类型。简单举个多态的例子

Person p = new Student();

这里的p编译时类型为Person,运行时类型为Student。

从这个例子可以看出,多态提高了代码的灵活性。

但是当我们在程序中不清楚外部传入的对象类型,又需要调用它的方法时(封装工具类时),只能依靠反射。因为在编译时无法知道真正的对象(动态的),只有运行时才能发现对象的全部信息。

怎么做

主要的类

  • Class类:反射的核心类,可以获取类的属性,方法等信息。
  • Field类:Java.lang.reflec包中的类,表示类的成员变量,可以用来获取和设置类之中的属性值。
  • Method类:Java.lang.reflec包中的类,表示类的方法,它可以用来获取类中的方法信息或者执行方法。
  • Constructor类:Java.lang.reflec包中的类,表示类的构造方法。

获取Class对象

调用某个对象的 getClass方法

Person p=new Person0;

调用某个类的class属性来获取该类对应的Class对象

Class clazz=Person.class;

使用 Class 类中的 forName0静态方法(最安全/性能最好,也是最常用的)

Class clazz=Class.forName("类的全路径”);

获取构造方法

获取成员变量

获取申明的方法

获取注解信息

 

猜你喜欢

转载自blog.csdn.net/zh137289/article/details/107924047
今日推荐