黑马程序员——Java反射_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 黑马程序员——Java反射

黑马程序员——Java反射

 2013/10/12 3:24:29  吴兴峰  程序员俱乐部  我要评论(0)
  • 摘要:----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------1.概念反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所属的属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。2Class类Java程序在运行时,系统会对所有的对象进行所谓的运行时类型标识,用来保存这些信息的类就是Class类
  • 标签:程序 程序员 Java 反射

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

?

1.概念

反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所属的属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。

2Class

Java程序在运行时,系统会对所有的对象进行所谓的运行时类型标识,用来保存这些信息的类就是Class类。Class类封装一个对象和接口运行时的状态。

3.JVM进程终止的状态分类

A:程序运行到最后正常结束。

B:程序运行到使用System.exit()Runtime.getRuntime().exit()代码处结束程序。

C:程序运行过程中遇到为捕获的异常错误而结束。

D:程序所在平台强制结束了JVM进程。

4.获得Class对象的方法

每个类加载后,系统都会为该类生成一个对应的Class对象,通过该Class对象就可以访问到JVM中的类。

A:使用Class类的forName(String ClazzName)静态方法

????? 该方法需传入字符串参数,该字符串参数的值是某个类的全限定类名(必须添加完整包名)

B:调用某个类的Class属性来获取该类对应的Class对象。

例:Person.class 将会返回Person类对应的Class对象。

C:调用Java.lang.Object类中的一个方法调用某个对象的getClass()方法。

5.创建对象的方法

A:使用Class对象的newInstance()方法来创建该Class对象对应类的实例。这种方式要求改Class对象的对应的类有默认的构造器,而执行newInstance()方法时实际上使用默认的构造器来创建类的实例。

B:先使用Class对象获取指定的constructor对象,在调用constructor对象的newInstance()方法来创建该Class对象对应的类的实例。通过这种方式可选择使用指定的构造器来创建实例。

?

使用制定的构造器创建Java对象步骤

A:获取该类的Class对象

B:利用CLass对象的getConstructor()方法来获取指定的构造器。

C:调用ConstructornewInstance()方法来创建Java对象。

6.调用方法

获得某个类对应的Class对象后,可通过该Class对象的getMethods()方法和getMethod()方法来获去全部或指定的方法。这两个方法的返回值类型Method数组和Method对象。

A: Object invoke(Object objObject..args)

该方法中的obj是执行该方法的主调,后面的args是执行该方法时传入该方法的实参。

B:public static void setAccessible(boolean flag)

调用此方法来取消访问权限检查,可通过反射既可访问private成员。

7.访问属性值

通过Class对象getFields()getFiled()方法可获去该类所包括全部Field或指定的Field

A:getXxx(Object obj)获取obj对象该Field的属性值,此处Xxx对应8个基本类型,如该属性类型是引用类型,则取消get后面Xxx

B;setXxx(Object obj,Xxx val)

obj对象的该Field设置为val值,此处Xxx对应8个基本类型,如该属性类型是引用类型,则取消set后面的Xxx

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net

发表评论
用户名: 匿名