黑马程序员_高新技术笔记,黑马程序员高新技术
黑马程序员_高新技术笔记,黑马程序员高新技术
------------ android培训、java培训、java博客、java学习型技术博客、期待与您交流! -------------
反射是通过一个类的相关信息诸如类名,实例对象,等来获取类中的方法和元素的一种方法。
要想使用反射 就要先获取到Class对象 获取Class对象有三种方式
第一种:类名.class
第二种:具体对象.getClass();
第三种:Class.forName("类所在的包+类名");
第一种方式的具体实现(类名.class):
比如要获取String的Class对象 就写成String.class;
[java] view plaincopy- Class cls=String.class;
第二种方式的具体实现(具体对象.getClass())
获取String的Class对象
[java] view plaincopy- String str="abc";
- Class cls=str.getClass();
第三种方式的具体实现(Class.forName("类所在的包+类名"))
获取String的Class对象
- Class cls=Class.forName("java.lang.String");
- 以上三种方式 第三种最为常见。
获取到Class对象以后就可以对Class对象所属的类进行各种操作
通过Class对象可以获取到以下类型的对象
Field 表示对象中定义的变量
Method 表示对象中的一般方法
Contructor 表示对象中的构造方法
因为每个变量或者方法都有private public 或默认的修饰符修饰 单纯用的获取方式只能得到被public所修饰的元素
所以一般都会用带有Declared的方法
获取对象中的元素一般都有两种方式 一种是获取单个 另一种是获取全部
关于Field
获取全部Field(Field[] fld=cls.getDeclaredFilds();)
获取单个Field(Field fld=cls.geDeclaredFild("变量名");)
关于Contructor
获取全部Contructor(Contructor[] con=cls.getDeclaredContructors();)
获取单个Contructor(Contructor con=cls.getDeclaredContructor(参数类型.class...);)
关于Method
获取全部Method(Method[] mtd=cls.getDeclaredMethods();)
获取单个Method(Method mtd=cls.getDeclaredMethod("方法名",参数类型.class))
获取到某个类的Class对象 并用这个Class对象获取到这个类中的各个元素以后 就可以对元素进行操作
Filed 主要有get方法和set方法
Contructor 可以用newInstance方法 利用获取到的构造函数来创建一个新的实例对象
Method invoke 可以直接调用这个类中定义的方法
以上的各种操作 只有当元素为public时 才可以进行 如果元素的访问状态为默认 或者为private时 需要使用setAccessible(boolean)改变元素的访问状态 才可以进行
类加载器:
java默认提供了3个类加载器 BootStrap ExtClassLoader AppClassLoader
类加载器本身也是一个java类 因为是类 所以本身也会被类加载器加载
加载默认3个类加载器的类是BootStrap 这个类加载器并不是一个java类
BootStrap 加载器加载JRE/lib/rt.jar
Ext加载器加载JRE/lib/ext/*.jar
AppClassLoader 加载classpath指定目录中的jar文件
获取类加载器的方法 字节码.getClassLoader();
------------ android培训、java培训、java博客、java学习型技术博客、期待与您交流! -------------
详情请查看:http://edu.csdn.net/heima/
相关文章
- 暂无相关文章
用户点评