反射.txt 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. 反射-Class的方法:
  2. 反射-Class获取成员构造方法:
  3. 获取某个类的所有【公共的】构造方法组成的数组 getConstructors()
  4. 获取某个类的所有的构造方法组成的数组 getDeclaredConstructors()
  5. 获取某个公共构造方法的对象 getConstructor()
  6. 获取某个构造方法的对象 getDeclaredConstructor()
  7. 反射-Class获取成员变量对象:
  8. 返回所有公共成员变量对象的数组 Field[] getFields();
  9. 返回所有成员变量对象的数组 Field[] getDeclaredFields();
  10. 返回单个公共成员变量对象 Field getField(String name);
  11. 返回单个成员变量对象 Field getDeclaredField(String name);
  12. 反射-Class获取父类和接口的方法:
  13. 返回某个类的所有父类 getSuperclass();
  14. 返回某个类的所有实现的接口 getInterface();
  15. 反射-Class获取方法的方法:
  16. 返回所有的公共方法--包含从父类继承的方法 Method[] getMethods();
  17. 返回所有的方法 Method[] getDeclaredMethods();
  18. 返回单个公共的成员方法对象 Method getMethod(String name, Class<?>... parameterTypes)
  19. name是方法名,parameterTypes是参数类型列表
  20. 返回单个成员方法对象 Method getDeclaredMethod(String name, Class<?>... parameterTypes)
  21. Constructor--代表所有的构造方法的类型
  22. 根据指定的构造方法创建对象 T newInstance(Object..initargs)
  23. 设置为true,表示取消访问检查 setAccessible(boolean flag)
  24. 获取构造方法的参数类型 getParameterTypes()
  25. 获取构造方法的修饰符 getModifiers()
  26. 获取构造方法参数的个数 getParameterCount()
  27. Field--代表所有的成员变量的类型
  28. 反射-Field的方法:
  29. 赋值 void set(Object obj,Object value)
  30. 取值 Object get(Object obj)
  31. 获取这个成员变量的类型 getType()
  32. 获取这个成员变量的修饰符 getModifiers()
  33. Method---代表所有方法的类型
  34. 反射-Method的方法:
  35. 调用指定对象的方法 invoke(Object obj,Object...args);
  36. 获取方法的返回值类型 getReturnType()
  37. 获取方法的参数类型列表 getParameterTypes()
  38. 获取这个成员方法的修饰符 getModifiers()
  39. 案例1:基础类信息获取
  40. 编写程序,使用反射获取java.lang.String类的以下信息并打印:
  41. 类的全限定名
  42. 所有实现的接口
  43. 父类
  44. 访问修饰符
  45. 案例2:构造方法调用
  46. 定义一个包含私有构造方法(接收String参数)和公共无参构造方法的Person类,
  47. 使用反射分别创建这两种构造方法对应的实例对象。
  48. 案例3:字段操作
  49. 创建一个Student类,包含私有字段name和age,以及公共字段id。使用反射完成:
  50. 获取所有字段(包括私有)并打印名称和类型
  51. 修改私有字段age的值
  52. 读取私有字段name的值
  53. 案例4:方法调用
  54. 在Calculator类中定义:
  55. 公共方法add(int a, int b)返回两数之和
  56. 私有方法multiply(double a, double b)返回两数之积
  57. 使用反射调用这两个方法并输出结果。
  58. 案例5:反射综合应用
  59. 编写一个通用的对象转 Map 工具类ObjectToMapConverter,使用反射实现:
  60. 接收任意对象作为参数
  61. 将对象的所有非静态字段名作为 key,字段值作为 value 存入Map
  62. 支持忽略指定字段(如通过参数String... ignoreFields)
  63. public Map toMap(Object obj,String... ignoreFields){
  64. }