JAVA技术(一)——字节码&反射

本文深入探讨JAVA的反射机制,讲解字节码与类的关系,以及如何通过反射动态创建对象和调用方法。通过反射,可以在运行时确定类型,降低类之间的耦合性,体现多态应用。同时,文中以Spring框架为例,阐述反射在框架中的实际应用,揭示其在提高系统灵活性和扩展性方面的重要性。
摘要由CSDN通过智能技术生成
    Reflection - 反射是J2SE1.1就已经提出了,但当时仅支持Introspection自省。在1.2之后开始逐渐成熟,spirng、hibernate等成熟框架都大量使用java反射技术实现。

在面向对象设计思想中,使用类这一概念表述一类具有相同属性的对象;而这些属性值具体是什么,由该类的每个实例化对象来确定,每个对象可以有不同的属性值。反之,这些是否属于同一类事务,java使用Class来描述类的访问属性、包名、字段名。学习反射,首先就要了解这个首字母大写的-Class

一、Class—字节码

在源程序中,实例化某个类时,先将类编译成.class形成二进制代码,然后把二进制代码加载到java内存中,用于创建对象。这个二进制代码就是Class类的字节码(Byte-code)。当使用到多个类时,内存中就会加载多个不同的字节码,占用内存空间。字节码跟类是对应的,不同字节码在jvm中的内容以类的类型区分。

有了对象实例,通过obj.getClass()方法也可以获得这个对象在内存中的字节码,得到字节码方可得到这个对象所对应的类。反之,知道了这个类也可以获得实例对象。 

二、一个New并不能解决问题

那么问题来了,有些人可能会说,干嘛那么麻烦都个大圈,我直接new 一个类,不就可以轻松创建这个实例吗?

这就涉及到java对象创建的两个编译方式:静态编译和动态编译

静态编译:在编译时确定对象,绑定对象即可通过编译。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值