首页 > 代码库 > java反射的应用

java反射的应用

使用java的反射功能,获得class类的各种信息


要分析的是student这个类,这个类的源码为

package com.j.test;

/**
 * Created by brady on 15-1-15.
 */
public class Student {
    int age;
    String name;
    public int getDay( int yearDay ){
        int aa = 0;
        aa = age*yearDay;
        return aa;
    }
}

通过java的反射功能可以打印出student类里面的方法名,方法的参数等信息

package com.j.test;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Operate {

    public static void main(String[] args){
        Class s = Student.class;

        // 获得变量类型
        Field[] f = s.getFields();
        System.out.print("变量:");
        for (Field fl : f){
            System.out.print( fl.getClass().getName() );
        }
        System.out.println();

        // 获得对象的方法名
        Method[] methods = s.getMethods();
        for( Method m : methods ){
            System.out.print("方法名:" + m.getName() + " ");

            // 获得参数名
            Class[] p = m.getParameterTypes();
            System.out.print("参数为:" );
            for( Class pl : p ){
                System.out.print(pl.getName() + " ");
            }

            // 获得方法返回值类型
            Class rt = m.getReturnType();
            System.out.print("返回值类型为:" + rt.getName() + " ");

            System.out.println();
        }
    }
}

可以运行查看到console的结果

变量:
方法名:getDay 参数为:int 返回值类型为:int 
方法名:wait 参数为:long int 返回值类型为:void 
方法名:wait 参数为:long 返回值类型为:void 
方法名:wait 参数为:返回值类型为:void 
方法名:equals 参数为:java.lang.Object 返回值类型为:boolean 
方法名:toString 参数为:返回值类型为:java.lang.String 
方法名:hashCode 参数为:返回值类型为:int 
方法名:getClass 参数为:返回值类型为:java.lang.Class 
方法名:notify 参数为:返回值类型为:void 
方法名:notifyAll 参数为:返回值类型为:void 


java反射的应用