`
cas1991321
  • 浏览: 3730 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java的反射机制

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

1.Class类简介

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

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

        b.这里的Class中的“C”为大[/img][/url][/flash]写,如果变成小写就声明成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[4];  
        int[][]intArray=new int[4][4];  
        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[4];
int[][]intArray=new int[4][4];
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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics