一个例子让你了解Java反射机制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一个例子让你了解Java反射机制

JAVA反射机制:

通俗地说,反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作,希望读者能理解,也就是说,类,类的成员,我们在运行的时候还可以动态地去操作他们.

理论的东东太多也没用,下面我们看看实践 Demo ~

Demo:

1.package cn.lee.demo;

2.

3.import ng.reflect.Constructor;

4.import ng.reflect.Field;

5.import ng.reflect.InvocationTargetException;

6.import ng.reflect.Method;

7.import ng.reflect.Modifier;

8.import ng.reflect.TypeVariable;

9.

10.public class Main {

11. /**

12. * 为了看清楚Java反射部分代码,所有异常我都最后抛出来给虚拟机处

理!

13. * @param args

14. * @throws ClassNotFoundException

15. * @throws InstantiationException

16. * @throws IllegalAccessException

17. * @throws InvocationTargetException

18. * @throws IllegalArgumentException

19. * @throws NoSuchFieldException

20. * @throws SecurityException

21. * @throws NoSuchMethodException

22. */

23. public static void main(String[] args) throws ClassNotFoundException, Instanti

ationException, IllegalAccessException, IllegalArgumentException, InvocationTa rgetException, SecurityException, NoSuchFieldException, NoSuchMethodExcept ion {

24. // TODO Auto-generated method stub

25.

26. //Demo1. 通过Java反射机制得到类的包名和类名

27. Demo1();

28. System.out.println("========================================

=======");

29.

30. //Demo2. 验证所有的类都是Class类的实例对象

31. Demo2();

32. System.out.println("========================================

=======");

33.

34. //Demo3. 通过Java反射机制,用Class 创建类对象[这也就是反射存在

的意义所在],无参构造

35. Demo3();

36. System.out.println("========================================

=======");

37.

38. //Demo4: 通过Java反射机制得到一个类的构造函数,并实现构造带参

实例对象

39. Demo4();

40. System.out.println("========================================

=======");

41.

42. //Demo5: 通过Java反射机制操作成员变量, set 和 get

43. Demo5();

44. System.out.println("========================================

=======");

45.

46. //Demo6: 通过Java反射机制得到类的一些属性:继承的接口,父类,

函数信息,成员信息,类型等

47. Demo6();

48. System.out.println("========================================

=======");

49.

50. //Demo7: 通过Java反射机制调用类中方法

51. Demo7();

52. System.out.println("========================================

=======");

53.

54. //Demo8: 通过Java反射机制获得类加载器

55. Demo8();

56. System.out.println("========================================

=======");

57.

58. }

59.

60. /**

61. * Demo1: 通过Java反射机制得到类的包名和类名

62. */

63. public static void Demo1()

64. {

65. Person person = new Person();

66. System.out.println("Demo1: 包

名: " + person.getClass().getPackage().getName() + ","

67. + "完整类名: " + person.getClass().getName());

68. }

69.

70. /**

71. * Demo2: 验证所有的类都是Class类的实例对象

72. * @throws ClassNotFoundException

73. */

74. public static void Demo2() throws ClassNotFoundException

75. {

76. //定义两个类型都未知的Class , 设置初值为null, 看看如何给它们赋值

成Person类

77. Class class1 = null;

78. Class class2 = null;

79.

80. //写法1, 可能抛出 ClassNotFoundException [多用这个写法]

81. class1 = Class.forName("cn.lee.demo.Person");

82. System.out.println("Demo2:(写法1) 包

名: " + class1.getPackage().getName() + ","

83. + "完整类名: " + class1.getName());

84.

85. //写法2

86. class2 = Person.class;

87. System.out.println("Demo2:(写法2) 包

名: " + class2.getPackage().getName() + ","

88. + "完整类名: " + class2.getName());

89. }

90.

91. /**

92. * Demo3: 通过Java反射机制,用Class 创建类对象[这也就是反射存在的

意义所在]

相关文档
最新文档