-
反射reflect
1.1 Class(描述类的类)
获得类对象的三种方式1.1.1 通过字符串的类名获取
Class c = Class.forName(“com.direct.Person”);
1.1.2 通过类.class来获取
Class c = Person.class;
1.1.3 通过对象.getClass()来获取
Person p = new Person();
Class c = p.getClass();
1.2 Constructor(描述构造方法的类)
1.2.1 获得构造方法
getConstructors // 获取所有public构造方法
getConstructor(new Class[] {..}) //获取指定参数列表的可见构造方法
getDeclaredConstructor(new Class[]{…})// 获取声明的构造方法(包括私有的)
getDeclaredConstructors //获取所有构造方法(包括私有的)1.2.2 根据构造方法创建对象
cons.newInstance(new Object[]{..})
1.3 Field(描述属性的类)
1.3.1 获取属性
Field[] fs1 = c.getFields(); // 获取拥有的public的属性(包括继承来的属性)
Field[] fs2 = c.getDeclaredFields(); // 获取自己类中声明的属性(包括私有属性)
Field f1 = c.getField(“name”);
Field f2 = c.getDeclaredField(“name”);
1.3.2 访问属性
Feild f = c.getFeild(“name”);
f.set(obj,value);// 设置obj对象的name属性值为value,相当于obj.name = value;
Object value = f.get(obj); // 获取obj对象的name属性值 相当于 Object value = obj.name;f.setAccessible(true); // 设置name属性可以被访问(修改访问权限,private也可以修改)
1.4 Method(描述方法的类)
1.4.1 获取方法
c.getMethod(name, parameterTypes)
c.getMethods()
c.getDeclaredMethod(name, parameterTypes)
c.getDeclaredMethods()1.4.2 执行方法
Method m1 = c.getMethod(“eat”, new Class[]{});
// 执行对应的方法
Object r = m1.invoke(o, new Object[]{});// 执行o对象的eat方法,用r来接收返回值
m1.setAccessible(true);
相关文章
- 关于C++与Java中虚函数问题的读书笔记
- C++笔记008:C++对C的扩展——命名空间 namespace基础
- 【零基础 快速学Java】韩顺平 笔记整理(到p170 跑路了)
- Elasticsearch RestHighLevelClient 已标记为被弃用 它的替代方案 Elasticsearch Java API Client 的基础教程及迁移方案
- 2019-9-9:渗透测试,基础学习,phpmyadmin getshell方法,基于时间的盲注,基于报错的注入,笔记
- 关于java web的笔记2018-01-12
- 【JAVA】后端开发中的数据结构:基础知识与应用场景
- 一份不错的vue.js基础笔记!!!!
- java学习:AWT组件和事件处理的笔记(1)--文本框
- 2018java基础面试题(我自己用的,面试好多家公司基本会问到的问题和技术)