对java反射的理解

长久以来,不能深刻理解,老是困惑,现在的理解是这样的:一般来讲都是对代码要先编译,即运行时直接调用编译后的代码,但是有了反射机制后,运行中的代码就可以直接调用预先未经编译后的代码~

java反射是在运行时才通过外部资源获取类名,加载类的详细信息,并进行构造对象或者设值、取值。它是支持对象序列化和javabean等特性的关键。。。

为什么说java有反射这种机制,为什么c++没有,什么是动态语言,为什么说反射是使得java成为半动态语言的一个关键性质,下面转载的资料比较有用:

以下转载自网络:

Java反射机制是Java语言被视为准动态语言的关键性质。如果Java反射仅仅能够得到Java类(或对象)运行时的信息,而不能改变其行为和属性,那么它当然算不上“动态”。百度了一把何谓“动态语言”,解释如下:动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。由此看来,Java确实不能算作“动态语言”。但是和CC++等纯静态语言相比,Java语言允许使用者在运行时加载、探知、使用编译期间完全未知的classes,所以我们说Java是“准动态”语言。

细心地读者可能已经发现,在“类中最重要的三个信息”一节中,我们获取的信息其实都是属于类的,而不是对象。对于类的信息提取,其实并不涉及到对象内存,在程序编译完成的那一刻起,一切都已经是确定的了。因此,它并不能算“动态”。而如何对对象内存进行操作和访问,才是“动”的真正含义。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值