什么是反射和字节码对象。-创新互联-成都快上网建站

什么是反射和字节码对象。-创新互联

1.什么是"反射"
它是Java中提供的一种“操作对象”的方式。在运行状态下,通过class文件对象,去使用构造方法,成员变量,成员方法。 之前我们创建对象:
class Demo{
Student stu = new Student();
}
会使Demo类“依赖于”Student类--产生耦合
反射使用另一种方式操作对象,就可以解决这种依赖关系;
方法有三种:
1.类名.class
2.对象.getclass()
3.class.forName("包名.类名")
好处:
只要有一个类或者一个类的对象,就可以得到这个类或对象的所有属性和方法,包括私有的
同步方法
反射成员方法:
1.获取字节码文件
Class c = Class.forName("包名.类名");
2.反射方法
Method m = c.getMethod("反射的方法",方法的参数类型.class);
3.用方法,m.invoke(对象,参数) 对象,c.newInstance ,在A建立对象。
m.invoke(c.newInstance(),参数);
类加载器与反射有什么关系
反射是通过字节码文件对象,将类的字段,方法,构造器等映射成相应的类,并进行各自的操作;
类加载器是通过某个类的.classLoader()方法,将该类的.class文件从硬盘中加载到java虚拟机中,形成字节码文件;
2.什么是“字节码对象“
每个类被加载之后,系统就会为该类生成一个对应的字节码对象,通过该字节码对象就可以访问到JVM中的对应的类。
获取字节码对象的三种方式
1.使用类的.class属性

创新互联专注于平定企业网站建设,响应式网站,商城建设。平定网站建设公司,为平定等地区提供建站服务。全流程定制网站制作,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

Class<类类型> clz1 = 类名.class;
1
2.通过Class类中的静态方法forName(String className),传入类的全限定名(必须添加完整包名)比较常用

Class clz2 = Class.forName("java.util.Date");
1
3.通过对象的getClass方法来实现,其中,getClass()是Object类中的方法,所有的对象都可以调用该方法

Date str = new Date();
Class clz3 = str.getClass();

Class clazz = this.getClass();//获取字节码对象
Method method = clazz.getMthod("方法名",req.class,resp.class);//反射方法的字节码对象
注意:同一个类在JVM中只存在一份字节码对象,也就说上述,claz1 == clz2 == clz3;

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


分享文章:什么是反射和字节码对象。-创新互联
网站网址:http://kswjz.com/article/jisip.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流