java基础之反射

2017-05-13  本文已影响6人  watayouxiang

反射

  1. Class
    • .class文件加载到内存中就是一个Class对象
    • 获取Class对象的方式有3种:
      • Class.forName(类名);
      • 类名.class
      • 对象.getClass()
  2. Constructor
    • Class类的newInstance()方法是使用该类无参的构造函数创建对象
    • 如果一个类没有无参的构造函数, 就不能这样创建了,可以调用Class类的getConstructor(String.class,int.class)方法获取一个指定的构造函数然后再调用Constructor类的newInstance("张三",20)方法创建对象
  3. Field
    • Class.getField(String)方法可以获取类中的指定字段(可见的)
    • 如果是私有的可以用getDeclaedField("name")方法获取, 通过set(obj, "李四")方法可以设置指定对象上该字段的值
    • 如果是私有的需要先调用setAccessible(true)设置访问权限, 用获取的指定的字段调用get(obj)可以获取指定对象中该字段的值
  4. Method
    • Class.getMethod(String, Class...) 和 Class.getDeclaredMethod(String, Class...)方法可以获取类中的指定方法
    • 调用invoke(Object, Object...)可以调用该方法,
      • Class.getMethod("eat") invoke(obj)
      • Class.getMethod("eat",int.class) invoke(obj,10)
上一篇 下一篇

猜你喜欢

热点阅读