黑马程序员_高新技术笔记

------------ android培训java培训、java博客、java学习型技术博客、期待与您交流! -------------


反射是通过一个类的相关信息诸如类名,实例对象,等来获取类中的方法和元素的一种方法。

要想使用反射 就要先获取到Class对象 获取Class对象有三种方式

第一种:类名.class

第二种:具体对象.getClass();

第三种:Class.forName("类所在的包+类名");

第一种方式的具体实现(类名.class):

         比如要获取String的Class对象 就写成String.class;

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Class cls=String.class;  

第二种方式的具体实现(具体对象.getClass()

        获取String的Class对象

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. String str="abc";  
  2. Class cls=str.getClass();  

第三种方式的具体实现(Class.forName("类所在的包+类名")
       获取String的Class对象

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Class cls=Class.forName("java.lang.String");  
[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. 以上三种方式 第三种最为常见。  

获取到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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值