`
zwt2001267
  • 浏览: 436002 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 反射资料

阅读更多
import java.lang.reflect.*;
public class ReflectionTest {
    public static void main(String[] args) {
        Class c=null;
        try {
            c=Class.forName("java.lang.String");
            System.out.println("package "+c.getPackage().getName()+";");
            System.out.print(Modifier.toString(c.getModifiers())+" ");
            System.out.print("class "+c.getSimpleName()+" ");
            if (c.getSuperclass()!=Object.class) {
                System.out.print("extends " + c.getSuperclass().getSimpleName());
            }
            Class[] inters=c.getInterfaces();
            if(inters.length>0){
                System.out.print("implements ");
                for(int i=0;i<inters.length;i++){
                    System.out.print(inters[i].getSimpleName());
                    if(i<inters.length-1){
                        System.out.print(",");
                    }
                }
            }
            System.out.println("{");
            printFields(c);
            printMethods(c);
            System.out.println("}");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            
    }
    public static void printFields(Class c){
        Field[] field=c.getDeclaredFields();
        if(field.length>0){
            for(int i=0;i<field.length;i++){
                System.out.println(Modifier.toString(field[i].getModifiers())+" "+field[i].getType().getSimpleName()+" "+field[i].getName()+";");
            }
        }
    }
    public static void printMethods(Class c){
        Method[] method=c.getDeclaredMethods();
        if(method.length>0){
            for(int i=0;i<method.length;i++){
                Class[] parameter=method[i].getParameterTypes();
                System.out.print(Modifier.toString(method[i].getModifiers())+" "+method[i].getReturnType().getSimpleName()+" "+method[i].getName()+"(");
                for(int j=0;j<parameter.length;j++){
                    System.out.print(parameter[j].getSimpleName()+" args");
                    if(j!=parameter.length-1){
                        System.out.print(",");
                    }
                }
                System.out.print(") ");
                Class exception[]=method[i].getExceptionTypes();
                
                if (exception.length>0) {
                    System.out.print("throws ");
                    for (int j = 0; j < exception.length; j++) {
                        System.out.print(exception[j].getSimpleName());
                    }
                }
                System.out.println("{");
                System.out.println("\t... ...");
                System.out.println("}");
            }
            
        }
    }

}


 

代码是通过java反射探查出java.lang.String类的结构,其实反射就是基因技术,Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。反射最大的应用就是框架。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics