
java基础—反射
编程Thinker
专注于软件开发,文章以实际经验总结而成...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
反射(1)--类加载器
类加载器类的加载当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。n 加载 就是指将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象。n 连接验证:是否有正确的内部结构,并和其他类协调一致准备:负责为类的静态成员分配内存,并设置默认初始化值解析:将类原创 2017-02-23 21:52:49 · 246 阅读 · 0 评论 -
反射(2)--Class类
反射JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.反射:就是通过class文件原创 2017-02-23 22:01:52 · 310 阅读 · 0 评论 -
反射(3)--Constructor类(构造器)
获取Constructor类(构造器) 通过Class类的以下方法,我们可以获得构造器。l publicConstructor[] getConstructors():所有公共构造方法l publicConstructor[] getDeclaredConstructors():所有构造方法l publicConstructor getConstructor(原创 2017-02-23 22:04:05 · 955 阅读 · 0 评论 -
反射(4)--Field类
获取Field类 通过Class类的以下方法,我们可以获得构造器。l public Field [] getFields ():所有公共成员变量l public Field [] getDeclaredFields():所有成员变量l public FieldgetField(String name):获取单个公共成员变量,name 参数是一个 Strin原创 2017-02-23 22:06:59 · 220 阅读 · 0 评论 -
反射(5)--Method类
获取Method类 通过Class类的以下方法,我们可以获得构造器。l public Method [] getMethods ():获取自己的包括父亲的公共方法l public Method [] getDeclaredMethods():获取自己的所有的方法l public MethodgetMethod(String name,Class... para原创 2017-02-23 22:08:20 · 361 阅读 · 0 评论 -
反射(6)--动态代理
动态代理• 代理:本来应该自己做的事情,却请了别人来做,被请的人就是代理对象。• 举例:春季回家买票让人代买• 动态代理:在程序运行过程中产生的这个对象• 而程序运行过程中产生对象其实就是我们刚才反射讲解的内容,所以,动态代理其实就是通过反射来生成一个代理创建动态代理l 在Java中java.lang.reflect包下提供了一个Proxy类和一个原创 2017-02-23 22:11:28 · 280 阅读 · 0 评论 -
反射示例1:通过配置文件运行类中的方法
例1:通过配置文件运行类中的方法// 加载键值对数据 Properties prop = new Properties(); FileReader fr = new FileReader("class.txt"); prop.load(fr); fr.close(); // 获取数据 Stri原创 2017-02-23 22:15:14 · 463 阅读 · 0 评论 -
反射示例2:在ArrayList<Integer>集合中添加一个字符串数据
例2:在ArrayList集合中添加一个字符串数据// 创建集合对象 ArrayList array =new ArrayList(); Class c =array.getClass();// 集合ArrayList的class文件对象 Method m =c.getMethod("add", Object.class);原创 2017-02-23 22:16:29 · 952 阅读 · 0 评论 -
反射示例3:写一个方法设置对象任意权限的属性的值
例3:写一个方法设置对象任意权限的属性的值写一个方法:public void setProperty(Objectobj, String propertyName, Object value){},此方法可将obj对象中名为propertyName的属性的值设置为value。(这里不知道obj对象的propertyName属性的权限,如果为private,则必须使用反射才能设置,所有才有了原创 2017-02-23 22:21:16 · 1273 阅读 · 0 评论