🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## java反射 - 需要使用Class类 ``` 使用Class类来表示所有类。Class类中定义了所有类的行为跟特征 ``` * [ ] Class 对象使用反射的一个源头 * [ ] * [ ] 使用反射可以获得类的所有的方法和属性,包括私有的; >### 获得Class的三种方式: - 第一种: ``` Class classTypes = 类名.class; ``` - 第二种: ``` 首先创建一个类对象; Class classTypes = 对象名.getClass(); ``` - 第三种(推荐使用): ``` Class classTypes = Class.forName(全类名(String)); ``` >### 方法 ``` * getMethods():可以拿到当前类的所有方法(只包含公有的以及继承的方法),返回类型是Method对象数组; * getMethod(方法名称,声明参数列表):拿到指定方法,参数格式:参数类型.class; * getDeclaredMethod(方法名称,声明参数列表):拿到指定方法,忽略访问权限修饰符。参数格式:参数类型.class; * setAccessible(true):设置访问权限为true,才能访问私有方法; * invoke(类任意对象,传入参数):调用方法(无参方法为null); getFields():拿到所有的属性(公有的的属性),返回Field对象数组; getFiled(属性名称):拿到指定公有属性; set(类任意对象,value): 对象属性设置; get(任意类对象):获得该指定对象属性; getDeclaredField(属性名称):获得所有属性,忽略访问权限修饰符; * setAccessible(true):设置访问权限为true,才能访问私有属性; getConstructors():拿到当前类所有公有构造器; getInterfaces():拿到当前类实现的接口; getAnnotations():返回当前类的所有注解; newInstance():实例化类对象 getName():拿到全路径名称 getSimpleName():只拿到名称 ``` - 注意 ``` 1. 使用getMethod()方法时应当注意方法的权限修饰符,如果是protected或者private应当使用getDeclaredMethod(); 2. invoke(类任意对象,传入参数)为Method类的执行方法,要调用则先通过getMethod()或getDeclaredMethod()获得Method对象。 ```