当前位置:首页 > 程序猿 > Java > 正文

java反射技术详解

反射:

其实就是动态的从内存加载一个指定的类,并获取该类中的所有的内容。

反射的好处:大大的增强了程序的扩展性。

反射的基本步骤:

  1. 获得Class对象,就是获取到指定的名称的字节码文件对象。
  2. 实例化对象,获得类的属性、方法或构造函数。
  3. 访问属性、调用方法、调用构造函数创建对象。

一、 获取Class对象,有三种方式 :

  1. 通过每个对象都具备的方法getClass来获取。弊端:必须要创建该类对象,才可以调用getClass方法。
  2. 每一个数据类型(基本数据类型和引用数据类型)都有一个静态的属性class。弊端:必须要先明确该类。
    前两种方式不利于程序的扩展,因为都需要在程序使用具体的类来完成。
  3. 使用的Class类中的方法,静态的forName方法。指定什么类名,就获取什么类字节码文件对象,这种方式的扩展性最强,只要将类名的字符串传入即可。

二、获取了字节码文件对象后,然后就需要创建指定类的对象:

创建对象的两种方式(其实就是对象在进行实例化时的初始化方式):

  1. 调用空参数的构造函数:
    使用了Class类中的newInstance()方法。
  2. 调用带参数的构造函数:
    先要获取指定参数的构造器对象,然后通过该构造器对象的newInstance(实际参数) 进行对象的初始化。

综上所述,第二种方式,必须要先明确具体的构造函数的参数类型,不便于扩展。所以一般情况下,被反射的类,内部通常都会提供一个公有的空参数的构造函数。

三、获取类中的方法,属性,构造函数。

1、获取方法

2、获取属性

3、获取构造函数

 

标签:
上一篇: 下一篇:

2 条评论

评论加载中...
  1. 沙发
    来自天朝的朋友 谷歌浏览器 Mac OS X 10_11_3 湖北省武汉市 电信
    免费福利   

    感谢分享

    2016年12月20日 下午3:04 评论
    • Gavin
      Gavin   

      互联网开源精神,互帮互助!!!

      2016年12月29日 下午1:57 评论

发表评论

不理你。 不要啊! 吃饭。 吃惊。 吃西瓜。 飞吻! 恭喜! Hi 纠结! 膜拜! OK 抛媚眼。 泡泡糖。 抛钱。 忍! 生闷气! 调皮。 偷看。 委屈。 献花。 疑问? 抓狂!