cas1991321 发表于 2013-1-19 04:07:06

Java的反射机制

java语言的反射机制为是java语言所提供的一项特别吸引人的地方,利用反射我们可以对程序的运行进行动态的监控,开发使用反射特性的程序需要使用一些专门的工具类,这些工具类位于java.lang.reflect包中。

1.Class类简介

    Class类属于java.lang包中,不需要使用import语句的引入就可以直接使用,其对象代表一个类,并携带类的一些信息,主要包含构造器,方法和成员变量。

   注:a.java程序在运行的过程中,每个类加载后都在内存中产生一个对应的Class对象,一般来说,这个对象由系统来自动维护,不需要程序开发人员关心,

      b.这里的Class中的“C”为大写,如果变成小写就声明成java的关键字了
下面首先通过一个列子来说明反射机制的使用

Java代码
package com;   
import java.lang.reflect.Method;   
public class ReflectTest {   
    Method method [];   
    public ReflectTest(){   
      try{   
      Class c=Class.forName("com.ReflectTest");   
      method=c.getMethods();   
      }catch(ClassNotFoundException e){   
            e.printStackTrace();   
      }   
      if(method.length>0){   
            for(int i=0;i0){   
            for(int i=0;i0){
for(int i=0;i:"+sc.getName());   
      System.out.println("二维int数组对应的类名为:"+ic.getName());   
    }   
    public static void main(String args []){   
      new ArrayReflection();   
    }   
   
}   
//运行结果为:   
一维string数组对应的类名为:[Ljava.lang.String;   
二维int数组对应的类名为:[[I   
Java代码
public class ArrayReflection {   
      public ArrayReflection(){   
      String []stringArray=new String;   
      int[][]intArray=new int;   
      Class sc=stringArray.getClass();   
      Class ic=intArray.getClass();   
      System.out.println("一维string数组对应的类名为:"+sc.getName());   
      System.out.println("二维int数组对应的类名为:"+ic.getName());   
    }   
    public static void main(String args []){   
      new ArrayReflection();   
    }   

}   
//运行结果为:   
一维string数组对应的类名为:[Ljava.lang.String;   
二维int数组对应的类名为:[[I

public class ArrayReflection {
public ArrayReflection(){
String []stringArray=new String;
int[][]intArray=new int;
Class sc=stringArray.getClass();
Class ic=intArray.getClass();
System.out.println("一维string数组对应的类名为:"+sc.getName());
System.out.println("二维int数组对应的类名为:"+ic.getName());
}
public static void main(String args []){
new ArrayReflection();
}

}
//运行结果为:
一维string数组对应的类名为:[Ljava.lang.String;
二维int数组对应的类名为:[[I 从运进结果我们可以看出,数组对象也有对应的类,"["表示数组,两个就表示二维数组。

在java中,每种基本数据类型都有对应的代号,对于int----I,boolean---Z,byte--B,char--C,long---J.可以到java网站查询详情

2.Field类的简单介绍

Field类的对象代表成员变量,携带的是成员变量的一些信息,需要注意的是,与Class类相似,Field对象不能通过构造方法的形式来创建对象,必须通过Class类提供的get方法来获得。

Java代码
import java.lang.reflect.Field;   
public class FieldReflectTest {   
    public static void main(String args []){   
      try{   
            Student stu=new Student(21,2003,true,"tom");   
            Class c=stu.getClass();   
            Field field[]=c.getFields();   
            for(int i=0;i
页: [1]
查看完整版本: Java的反射机制