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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 楞个里格朗 中级黑马   /  2013-9-3 10:12  /  909 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

反射是一种可以反映代码自身的一些方法或者属性的方法,在实际开发中会比实现了相同功能的代码更消耗资源,那么有什么意义呢?

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

4 个回复

正序浏览
楼主 你的问题如果解决了!



请把您的问题的"未解决"更改为"已解决"!



谢谢合作!

回复 使用道具 举报
想到了之前做的一道编程题,这道题要用反射才能解决:
ArrayList<Integer> list = new ArrayList<Integer>(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象

public class Test3 {

        public static void main(String[] args)
        {
                ArrayList<Integer> list = new ArrayList<Integer>();
                Method method = null;
                method = list.getClass().getMethod("add",Object.class); //通过反射,获得指定的方法add()
                String str = "I am a string type";
                method.invoke(list,str);//调用方法对象的invoke方法运行指定方法方法add(),参数中的list为所属的对象,str为方法的实际参数。
        }
}

反射有缺点,就像你说的,但优点更明显,能解决一些其它技术所不能解决的问题。它增强了程序的扩展性和灵活性。好处还是大大滴!!!

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
框架就要用到反射,动态代理、类加载器...哪里不用到反射?意义很大哦 亲
回复 使用道具 举报
反射其实就是程序能够自检查自身信息。就像程序会照镜子反光看自己。

在程序中可以检查某个类中的方法属性等信息,并且能够动态调用。
这样可以写出很灵活的程序。
比如要把一个对象中的数据copy到另外一个对象中,规则是属性名相同就copy,
就可以用反射来做,不需要指定每个属性的名字,只要动态从类中取得信息,
再判断属性名是否相同即可。当然应用还有很多。

反射可以结合Java的字节码,使用ASM和cglib等库,还能动态生成类。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

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