博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础回顾 —反射机制
阅读量:4562 次
发布时间:2019-06-08

本文共 1373 字,大约阅读时间需要 4 分钟。

  1. 无论生成某个类的多少对象,这些对象都会对应于同于个class。
    tips1: 反射的一切操作都是由Object完成,类、数组的引用都可以用Object进行接收。
  2. 要想使用反射,首先需要获得待处理类货对象所对应的Class对象。
    tips2: 所有类的对象实际上都是Class类的实例
  3. 获取某个类或某个对象对应的Class对象的3种方式:
    使用Class类的静态方法:forName
    使用类的.class语法: String.class
    使用对象的getClass()方法:String s = “aa”, Class<?> clazz = s.getClass();
  4. 若想通过类的不带参数的构造方法来生成对象,我们有两种方式:
    • 先获得Class对象,然后通过Class的newInstance()方法直接生成即可:Class<?> clazz = String.class, Object obj = clazz.newInstance();
      tips: 这个方式必须保证类中存在无参构造方法
    • 先获得Class对象,然后通过该对象获得对应的Constructor对象,在通过该Constructor对象的newInstance()生成:

      Class<?> clazz = String.class,
      Construcor cons = clazz.getCostructor(new Class[]{}),
      Object obj = cons.newInstance(new Object[]{});
  5. 若想通过带参数的构造方法生成对象,只能通过下面一种方式:

    Class
    clazz = String.class, Construcor cons = clazz.getCostructor(new Class[]{int.class}), Object obj = cons.newInstance(new Object[]{1}); Class
    clazz = Invoker.class; Constructorcons = clazz.getConstructor(new Class[]{String.class,int.class}); Object obj = cons.newInstance(new Object[]{"GuangPing",27}); Field field = clazz.getDeclaredField("name"); field.setAccessible(true); //压制java对访问修饰符的检查 field.set(obj, "LiPing"); Invoker invoker = (Invoker)obj; System.out.println(invoker.getName()); Method method = clazz.getDeclaredMethod("prints", new Class[]{}); method.setAccessible(true); method.invoke(obj, new Object[]{});

转载于:https://www.cnblogs.com/nextStep/p/6688467.html

你可能感兴趣的文章
CSS hack
查看>>
每日一小练——数值自乘递归解
查看>>
qq登陆错误提示
查看>>
bzoj 1192: [HNOI2006]鬼谷子的钱袋 思维 + 二进制
查看>>
没写完,没调完,咕咕咕的代码
查看>>
Android Studio使用技巧:导出jar包
查看>>
Problem E. TeaTree - HDU - 6430 (树的启发式合并)
查看>>
Kafka序列化和反序列化与示例
查看>>
win10下VS2010中文输入法切换为英文卡死
查看>>
retinex相关代码汇总
查看>>
Cortex-M3 异常返回值EXC_RETURN
查看>>
kettle 转换字段遇到问题(couldn't get row from result set)——摘
查看>>
nginx首页根据IP跳转
查看>>
【2019-08-20】有点目标,有点计划,有点目的
查看>>
【2019-09-10】美,真的跟年龄无关
查看>>
【2019-09-28】少,但更好
查看>>
【2019-09-13】耐心观察是一种技能
查看>>
mysql数据库2-常用命令
查看>>
安卓开发环境搭建(转)
查看>>
Harris角点检测
查看>>