在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

java反射总结

2016-12-20 13:13| 发布者: zhangjf| 查看: 510| 评论: 0

摘要: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制。 J ...

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能:在运行时判定任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判定任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

反射常用的API,代码中总结:
  1. import java.lang.reflect.Constructor;
  2. import java.lang.reflect.InvocationTargetException;
  3. public class ReflectDemo2 {
  4. /**
  5. * @author YCY
  6. */
  7. public static void main(String[] args) {
  8. Class testClass;
  9. try {
  10. // 拿到Test字节码文件
  11. testClass = Class.forName("com.java.Test");
  12. // 获取Test包
  13. Package p = testClass.getPackage();
  14. // 创建Test对象
  15. Test test1 = (Test) testClass.newInstance();
  16. // 调用Test对象中的public方法
  17. test1.method1();
  18. test1.method3(1, '你');
  19. // 获取Test全部的构造方法
  20. Constructor<?> cons[] = testClass.getConstructors();
  21. // 遍历数组,打印出Test所有的构造方法
  22. for (int i = 0; i < cons.length; i++) {
  23. System.out.println(cons[i]);
  24. }
  25. // 通过有参构造方法创建Test对象
  26. Test test2 = (Test) cons[0].newInstance(1, "你好", '吗');
  27. // 获取Test类继承的父类以及实现的接口
  28. Class<?> parents = testClass.getSuperclass();
  29. // 打印出Test类的父类名称
  30. System.out.println(parents.getName());
  31. // 获取Test类的所有实现的接口
  32. Class<?>[] interfaces = testClass.getInterfaces();
  33. for (int i = 0; i < interfaces.length; i++) {
  34. System.out.println(interfaces[i].getName());
  35. }
  36. } catch (ClassNotFoundException e) {
  37. e.printStackTrace();
  38. } catch (InstantiationException e) {
  39. e.printStackTrace();
  40. } catch (IllegalAccessException e) {
  41. e.printStackTrace();
  42. } catch (IllegalArgumentException e) {
  43. e.printStackTrace();
  44. } catch (InvocationTargetException e) {
  45. e.printStackTrace();
  46. }
  47. }
  48. }
复制代码

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-8 05:40

Copyright 2015-2025 djqfx

返回顶部