黑马程序员技术交流社区

标题: 反射-获取Class对象的三种方式 [打印本页]

作者: 何志超    时间: 2015-4-29 11:20
标题: 反射-获取Class对象的三种方式

反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容。而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员。
反射的好处:大大的增强了程序的扩展性。
获取Class对象的三种方式:
1:对象.getClass()
如果拿到了对对象,不知道是什么类型,用于获得对象的类型,
Object obj = new Person();
Class clazz1 = obj.getClass();
        弊端:必须要创建该类对象,才可以调用getClass方法。

2:类名.class
如果是明确地获得某个类的Class对象  主要用于传参
        弊端:必须要先明确该类。
         
前两种方式不利于程序的扩展,因为都需要在程序使用具体的类来完成。

3:Class.forName("全路径");
根据给定的类名来获得  用于类加载使用的Class类中的方法,静态的forName()方法。
         指定什么类名,就获取什么类字节码文件对象,这种方式的扩展性最强,只要将类名的字符串传入即可。

       
获取了字节码文件对象后,最终都需要创建指定类的对象:
就是使用了Class类中的newInstance()和newInstance(实际参数)方法。
在newInstance(实际参数)方法中需要明确具体的参数类型,不便于扩展,所以一般情况下,被反射的类的内部通常都会提供一个公有的空参构造函数。


作者: 横看成岭侧成锋    时间: 2015-4-29 12:13
总结的很详细,顶
作者: 突然世界晴    时间: 2015-4-29 12:56
总结的很详细
作者: 魔心邪    时间: 2015-4-30 17:57
学到知识了,顶起啊
作者: ninjaes    时间: 2015-4-30 20:20
希望楼主继续更新呀 视频里的看不懂呀




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2