关于java中反射机制的自我理解

本文深入讲解Java反射机制的原理及应用,包括类加载方式、创建类对象的不同方法、调用方法与字段的具体步骤,并附有代码示例。

1.java中的反射机制就是将磁盘上的任何类加载到内存中

        有三种方法

        (一) 类名.class  

        (二)new 类名.getClass();

        (三) Class.forName("类的完整路径");

         返回值类型都是Class

2.创建类对象。

      (一)通过无参的构造方法

                 Construct   s=反射类.getConstruct(null);        //只能得到public类型的构造方法 ,想要得到private修饰的构造方法使用getDeclreadConstruct();

                        类名 p=(类名)s.newInstance(null);

      (二)通过有参的构造方法

         Construct  s1=反射类.getConstruct(参数类型.class);

                        类名 p=(类名)s1.newlnstance("参数类型对应的值");                                              基本类型也可以  .class

3.反射类的方法

                      Method method=反射类.getMethod("方法名不带括号",参数没有时写null);

                      method.invoke(类对象(实例类),参数);

一个特殊的反射类的方法

                    部分代码展示
   Class class=Class.forName("cn.itlaobing.one.Person");

   Construct c=class.getDeclreadConstruct(Int.class,String.class);

                   Person kenan=(Person)c.newlnstance(18,"柯南");

  //调用Person中的eat方法,参数类型为InputStream ,方法必须用引号引起来  

                   Method method=kenan.getDeclreadMethod("eat",InputStream.class);

  //eat方法不是public权限的所以暴力反射

                   method.setAccessible(true);

                   //启动方法

                  method.invoke(kenan,new FileInputStream("person路径"));                  //如果调用静态的方法时候,对象可以省略,用null代替

反射类的main方法

                   

 Class class=Class.forName("cn.itlaobing.one.Person");

   Construct c=class.getDeclreadConstruct(Int.class,String.class);

                   Person kenan=(Person)c.newlnstance(18,"柯南");

                   Method method=kenan.getDeclreadMethod("main",String[].class);

                  method.invoke(null,[Object]new String{"aa","bb"});

  4.反射字段

   Class class=Class.forName("cn.itlaobing.reflect.Person");

                 Filed f=class.getFiled("name");

//获取字段的值

   Object obj=f.get("实体类");



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值