黑马程序员_反射
来源:互联网 发布:数据库代理 编辑:程序博客网 时间:2024/06/05 16:07
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
反射的主要用途是通过读取配置文件中的数据,通过反射技术来创建实例。
反射获取字节码文件对象的方式:class.forname(String classname),这个对象是class类型的,
需要注意里面的参数是需要带有包名的。
反射拿字节码文件对象时候回报出一个ClassNotFoundException 找不到该对象的错误。
反射创建对象需要几个步骤:
一:通过class.forname()获取字节码文件对象
二:通过字节码文件对象获取指定的构造方法
1.getConstructor(参数)获取指定的public修饰的构造方法
2.getDeclaredConstructor(参数)获取指定的构造方法包含私有的
3.getConstructors(参数)获取所有用public修饰的构造方法
4.getDeclaredConstructors(参数)获取所有的构造方法包含私有
三:通过构造方法用newInstance()方法创建对象
当要通过私有构造方法创建对象时,需要开启暴力访问 setAccessible(true)
反射获取方法:
1.getMethods()获取当前类与父类中所有public修饰的方法
2.getDeclaredMethods()获取当前类中所有方法包含私有(不包含私有)
3.getMethod(方法名,参数类型) 获取指定public修饰的方法
4.getDeclaredMethod(方法名,参数类型)获取指定的包含私有方法
调用方法的方式和调用构造方法是差不多的
执行调用的方法:
invoke(对象,参数)
获取成员变量:
1.getFields()获取所有public修饰的成员变量
2.getDeclaredfields()获取所有成员变量包含私有
3.getField() 获取指定的public修饰的成员变量
4.getDeclaredFiled()获取指定的成员变量包含私有
通过反射获取成员变量并使用:
前面的步骤还是一样的主要是怎么操作成员变量
1.set(对象,赋的值);
2.get(对象) 注意返回的值为object类型
私有的需要把前面的几个步骤改为私有获取的步骤
反射是通过编译的.class文件运行的,而编译后的.class文件会有一种泛型擦除的现象,
所以反射可以向有泛型约束的集合中添加任意元素。
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- codeforces#326-D - Duff in Beach- dp+分块
- IOS学习笔记 - NSFileManager,沙盒路径,NSString类路径处理,NSCache,读取文件头判断图片类型
- html中charset和content-language的区别
- Android Studio 常用快捷键 windows下默认
- 湖北民族学院2015CSDN俱乐部招新
- 黑马程序员_反射
- KMP详解
- 全面解析Linux数字文件权限
- Eclipse背景颜色修改
- linux下的目录详解与文件夹权限更改
- linux杂记
- CGI程序里调用system、popen运行命令需要root权限---boa配置需要注意的问题
- c# 窗体编程注意事项
- 黑马程序员——OC学习笔记04 核心语法