Java基础之反射整理

  1. 云栖社区>
  2. 博客>
  3. 正文

Java基础之反射整理

xiaoshuaiv5 2019-05-13 23:20:11 浏览2678
展开阅读全文

什么是反射?

Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。而这也是Java被视为动态(或准动态,为啥要说是准动态,因为一般而言的动态语言定义是程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。)语言的一个关键性质。

为什么需要反射

  • 在运行时检测对象的类型;
  • 动态构造某个类的对象;
  • 检测类的属性和方法;
  • 任意调用对象的方法;
  • 修改构造函数、方法、属性的可见性;
  • 以及其他。

得到Class类的三种方法

1.通过对象调用 getClass() 方法来获取

Li l1 = new Li();
Class c1 = l1.getClass();

2.直接通过 类名.class 的方式得到,该方法最为安全可靠,程序性能更高

Class c2 = Li.class;

3.通过 Class 对象的 forName() 静态方法来获取,用的最多

Class c3 = Class.forName("com.qq.Li");

Class的方法整理

  getName():获得类的完整名字。

  getFields():获得类的public类型的属性。
  getDeclaredFields():获得类的所有属性。包括private 声明的和继承类
  getMethods():获得类的public类型的方法。
  getDeclaredMethods():获得类的所有方法。包括private 声明的和继承类
  getMethod(String name, Class[] parameterTypes):获得类的特定方法,name参数指定方法的名字,parameterTypes 参数指定方法的参数类型。
  getConstructors():获得类的public类型的构造方法。
  getConstructor(Class[] parameterTypes):获得类的特定构造方法,parameterTypes 参数指定构造方法的参数类型。
  newInstance():通过类的不带参数的构造方法创建这个类的一个对象。

网友评论

登录后评论
0/500
评论
xiaoshuaiv5
+ 关注