反射学习心得

反射:加载类,并允许以编程的方式解剖类的各种成分(成员变量、方法、构造器)

获取某些类的信息、操作他们

第一步:加载类、获取类的字节码:class对象

获取class对象的三种方式:

Class c1 = 类名.class

调用Class提供的方法 public static Class forName(String package)

Object提供的方法:Class c3 = 对象.getClass()

2.获取类的构造器:constructor对象

返回的都是构造器对象数组 需要用Constructor【】数组来接 右边用 类名.getConstructor()获取全部构造器(只能获取public修饰符的)

getDeclaredConstructors()只要存在就能拿到的 俩者都可以带参来获取特定的构造器参数要以 int.class 等放进去

newInstance()创建对象,可以传参

setAccessible()设置为true,禁止检查访问控制(暴力反射)

3.类的成员变量:field对象

public Filed【】 getFields() 获取类的全部成员变量(只能获取public修饰的)

public Filed【】 getDeclaredFields()获取类的全部成员变量(只要存在就能拿到)

获取一个,就加成员变量的名字

4.类的成员方法:Method对象

方法基本上同上

作用:得到一个类的全部成分然后操作

可以破坏封装性

适合做Java的框架,主流的框架都会基于反射设计出一些通用的功能

你可能感兴趣的:(java,开发语言)