java基础(十四):反射

1.反射的意义:动态获取类以及类中的成员,并可对成员操作

         字节码对象:类的父类。所有同一个类(比如Person类)都是由Person.Class(Person字节码)创建的

 

2.动态创建对象的三种方法

         方法(1).String className = "Person"; Class clazz = Class.forName("className");    //推荐用这种方法

         方法(2).Person p = new Person();    Class clazz = new p.getClass();

         方法(3).Class clazz = Person.class;

 

3.动态创建对象

         String className = "Person";

         Class clazz = Class.forName("className"); 

         Object obj = clazz.newInstance();

         注:用这个方法的前提是Person类中有空的构造函数。

                如果Person类没有构造函数,需要自己指定构造函数。

         String className = "Person";

         Class clazz = Class.forName("className"); 

         Constructor cons = clazz.getConstructor(String.class,int.class);

         Object obj = cons.newInstance("lisi",23);

 

4.获取属性

         String name = "Person";

         Class clazz = Class.forName(name);

         Object obj = clazz.newInstance();

         Field field = clazz.getDeclaredField("age");//私有属性不可以获取

         field.setAccessible(true);//获取访问权限

         field.set(obj,20);

 

5.获取方法

         String name = "Person";

         Class clazz = Class.forName(name);//这两步是一样的

         (1).非静态,无参数的方法

                  Object obj = clazz.newInstance();

                  Method m = clazz.getMethod("showString",null);

                  m.invoke(obj,null);

         (2).非静态,有参数的方法

                  Object obj = clazz.newInstance();

                  Method m = clazz.getMethod("ShowString",String.class,int.class);

                  m.invoke(obj,"lisi",23);

         (3).静态,无参数的方法

                  Method m = clazz.getMethod("ShowString",null);

                  m.invoke(null,null);

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏哥哥啊Aaaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值