java字节码文件对象,什么是反射和字节码对象。

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;

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值