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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Changer_s 于 2013-5-22 23:31 编辑

算是研究了2天的反射了吧,然后张孝祥老师在讲main方法的如何反射时,说到了一句大致是这样的话“你都不晓得为什么要用它,就没必要学习了解它了”,然后就问什么?我当时一高兴,就听了下去,然后老师讲着讲着,突然程序出现异常,就讲如何解决这些异常去了,解决的太完美了,就这个问题就过了!好可惜呀!!!
代码理解我发过来:
//new String[]{"111","222","333"}首先要进行拆箱(为什么要拆箱,跟jdk1.4版本有关),也就是3个参数,但是我要一个数组,所以:
//(方法1)我要告诉java编译器,我传进来的是就是数组,不需要拆箱了
mainMethod.invoke(null, (Object)new String[]{"111","222","333"});
//(方法1)我把它包两层,java编译器拆箱后,剩下的就是一个数组
mainMethod.invoke(null, new Object[]{new String[]{"111","222","333"}});

虽然我晓得么样用反射,但是现在还是不理解为什么要使用反射,这个应用能带给我什么东西?我有点迷茫,求解决

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 张老师讲课很有意思

查看全部评分

7 个回复

倒序浏览
老师,学长们,求安慰,求解决,我想了解其然,更想了解其所以然!
张孝祥老师我挺喜欢的,天天看张老师的视频,教学真是没话说,真是研究代码太透彻了
可惜没机会问他这个问题,你们解决一下我心理的困惑吧!!!
回复 使用道具 举报
本帖最后由 breeze 于 2013-5-22 07:50 编辑

在使用框架的时候, 往往并不知道你将要使用哪个类, 哪个方法和字段, 是要先把这些类和方法通过配置文件的形式存储起来, 但需要用的时候, 由反射技术来获取到这些类和方法, 比如在config.properties文件中配置了一个映射className=java.lang.String  在程序代码中并没有出现String这个类, 而是通过读取配置文件中这一个Map映射, 通过key值, 就是className获得相应的value, 就是java.lang.String, 然后用Class.forName(value)获得了String的class对象, 而在代码中并没有显示的说明这个地方必须是String, 是通过配置文件中配置的信息来决定的, 所以需要什么类就只需要在配置文件中配置就可以了, 就没有必要修改源代码, 这样也增强了程序的灵活性, 和代码的可重用性
回复 使用道具 举报
breeze 发表于 2013-5-22 07:46
在使用框架的时候, 往往并不知道你将要使用哪个类, 哪个方法和字段, 是要先把这些类和方法通过配置文件的形 ...

但是还是不理解什么叫需要用的时候?什么要的需求我们会相当反射?反射给我们有带来了那些便利呢?也就是反射的意义所在,我一直不理解。你说的是增强程序的灵活性,和可重用性吗?减少了没必要花的时间?
回复 使用道具 举报
Changer_s 发表于 2013-5-22 08:04
但是还是不理解什么叫需要用的时候?什么要的需求我们会相当反射?反射给我们有带来了那些便利呢?也就是 ...

你只要在配置文件中写了需要调用的类名和方法名, 程序就能通过反射来调用, 你想用一个类及它的功能, 只需要修改配置文件就可以了, 而不用修改源代码, 这不就是便利性吗,建议将张孝祥老师的反射技术再看一遍
回复 使用道具 举报
breeze 发表于 2013-5-22 21:36
你只要在配置文件中写了需要调用的类名和方法名, 程序就能通过反射来调用, 你想用一个类及它的功能, 只需 ...

看来我仅仅只是看到了代码层面,我还要看一遍呀!!!呜呜呜~~~我再去奋斗哈子,这知识点不是一次就能明白呀,谢谢哥们了!!!嘿嘿。。。合作愉快!!!
回复 使用道具 举报
问题解决就再次编辑更改问题类型,没有解决继续追问
回复 使用道具 举报
breeze 发表于 2013-5-22 21:36
你只要在配置文件中写了需要调用的类名和方法名, 程序就能通过反射来调用, 你想用一个类及它的功能, 只需 ...

我看到后面的视频,在建立框架,嘿嘿,张孝祥老师解释了!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马