《java教程10_反射》.pdfVIP

  • 5
  • 0
  • 约3.24千字
  • 约 10页
  • 2015-10-05 发布于河南
  • 举报
《java教程10_反射》.pdf

Java反射(Reflection) 反射(Reflection) 2-1  反射是Java开发语言的特征之一,它允许运行中的Java程 序对自身进行检查(即内省),并能直接操作程序的内部属 性和方法。也就是说,利用反射可以在程序运行时对其进 行动态的控制。  在程序运行状态中,对于任意一个类都能够知道这个类的 所有属性和方法,对于任意一个对象都能够调用它的任意 一个方法,这种动态获取的信息以及动态调用对象的方法 的功能称为Java语言的反射机制。  在JDK 中,主要由以下类来实现Java 的反射机制,这些类 大部分位于java.lang.reflect包中。  Class类:代表一个类(java.lang.Class)  Field类:代表类的成员变量  Method类:代表类的方法  Constructor类:代表类的构造方法  Array类:提供了动态创建数组的方法 反射(Reflection) 2-2  反射机制的用途:  在运行时确定任意一个对象所属的类。  在运行时获取任意一个类的modifiers、成员变 量、方法。  在运行时创建任意一个类的实例,这个实例在 运行时刻才有名称。  在运行时取得和设定成员变量的值。  在运行时动态调用对象的方法。  动态创建数组,数组大小和类型在运行时刻才 能确定。 Class类(java.lang.Class)  Class类的对象代表一个类。  在Java程序运行过程中,当一个类被加载并被创 建对象时,和该类对应的一个类型为Class的对象 就会在内存中自动创建。Class类本身不提供构造 方法,因此,不能使用new运算符和构造方法显 式地创建一个Class对象。  任何类的对象调用getClass()方法都可以获取和该 对象相关的一个Class对象,这个Class对象可以获 取创建该对象的类的相关信息,比如:类的名称、 类中的方法名称、成员变量名称。 Class类的方法 2-1  String getName():返回该类的名称  Constructor[ ] getDeclaredConstructors():  返回类中的全部构造方法  Field [ ] getDeclaredFields()  返回类中的全部成员变量  Method [ ] getDeclaredMethods()  返回类中的全部方法  getPackage()  返回类所属的包信息  Constructor、Field 、Method是java.lang.reflect包中的类, 它们的对象分别代表构造方法、成员变量、方法,包含着 对应的构造方法、成员变量、方法的信息。  java.lang.Package类的对象代表一个包,包含相关包的信 息。 Class类的方法 2-2  public int getModifiers()  获取各自表示的类、成员变量、方法、构造方 法对应修饰符  public native boolean isInstance(Object obj)  类似于instanceof 精确判断类型  instanceof进行的是类型兼容的判断,子类 对象可以看做是父类类型。  使用反射进行的类型判断是精确类型的, 如果精确类型不匹配,则不能通过。 使用Class类实例化一个对象  加载指定的类,获取Class对象  Class clazz = Class.forName(“包名+类名”);  例如:Class clazz = Class.forName(“com.xawx.Test”);  创建加载类的对象  例如:Test test = (Test)clazz.newInstance();  注意:Class对象调用newInstance()方法实例化一个指定类的对象 时,指定类必须有无参数的构造方法。  获取

文档评论(0)

1亿VIP精品文档

相关文档