A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 默狼 中级黑马   /  2013-11-26 21:06  /  1439 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天学了反射,但对反射没听懂.不明白反射到底是做什么用的?应该怎样理解反射?
/*
* 反射:就是指通过字节码文件,去使用构造方法,成员变量,成员方法。
*
* 你想使用这些内容,那么首先要做的事情,就是你能够获取到字节码文件对象。
* 如何获取Class的对象呢?
* A:使用Object类的getClass()方法。
* B:使用数据类型.class这个静态的成员变量。
* C:使用的是Class类的forName()静态方法。
*   public static Class<?> forName(String className)
*
* 为什么常用第三种:
*  第三种方案需要的参数,将来可以通过配置文件配置使用。
*/
public class ReflectDemo {
public static void main(String[] args) throws ClassNotFoundException {
  // 方式1
  Person p = new Person();
  Person p2 = new Person();
  Class c = p.getClass();
  Class c2 = p2.getClass();
  System.out.println(p == p2);// false
  System.out.println(c == c2);// true
  // 方式2
  Class c3 = Person.class;
  System.out.println(c == c3);
  // 方式3
  // public static Class<?> forName(String className)
  Class c4 = Class.forName("cn.itcast_01.Person");
  // cn.itcast_01.Person
  // cn.itcast_01.Person
  System.out.println(c == c4);
}
} 希望大神指点下

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等,。System.reflection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码


反射的作用:

1.       可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现     有对象中获取类型

2.       应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某个任务时可以用到反射。

3.       反射主要应用与类库,这些类库需要知道一个类型的定义,以便提供更多的功能。

说透彻一点反射就是Java类的自省机制,暴露自身的一些方法、属性等自身状况

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马