您的位置:首页 > 编程语言 > Java开发

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

2017-10-29 20:54 323 查看
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("实体类");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: