为了账号安全,请及时绑定邮箱和手机立即绑定

如何理解绕过编译运行

项目是先编译,在编译期间为类分配资源,编译后生成.class文件,运行是运行已经编译好的文件。 问:那如何理解绕过编译运行呢? 老师的意思并不是真正的绕过,而是,eclipse你点run的时候,是编译运行一起来,而老师的操作是,我不需要你编译了,因为第一次我就编译运行了,我现在拿编译好的.class文件,直接运行,不需要再次编译,因为编译好的文件没有泛型的概念,所以老师可以任意输入类型然后运行而没有报错。这是我自己的理解。

正在回答

3 回答

list<string>里面的string只是在编译的时候用来检测放入的数据类型是否正确,编译成class的时候已经去掉string了,你再通过反射进行添加的时候已经没有限制了。

0 回复 有任何疑惑可以回复我~

反射做了什么:反射使代码的灵活性提高了;

就相当于人的逆向思维;

0 回复 有任何疑惑可以回复我~

我觉得不是这个意思,我idea直接运行的,其中就包括了生成字节码这一环节,总结就是,依然走正常的编译流程,通过反射的方法,只是不会再报错而已。

0 回复 有任何疑惑可以回复我~
#1

Nomo_Air 提问者

编译的过程是生成.class文件的过程,idea的运行是编译+运行。比如我们想用Util这个jar包。你会发现包下边都是.class结尾的文件,你可以用这个包下的方法,也就是说你用List,Map这些方法都是人家给你编译好的.class文件,你可以用它相关的方法,老师演示的int.class。就是这个意思,通过反射可以拿到的是这个类对应一些东西,如方法,参数这些,编译后的文件没有泛型的约束,也就是.class文件没有泛型的约束,所以,你用反射拿到这个方法对应的.class。然后运行这个.class。你就绕过了泛型约束,不知道你是怎么理解编译和运行,还有反射究竟做了什么。
2017-08-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

如何理解绕过编译运行

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号