java反射

来源:互联网 发布:mysql如何更改密码 编辑:程序博客网 时间:2024/06/10 22:36
反射和范型的组合大量的应用在框架的架构中,通过对反射和范型的学习有助于理解框架的原理,以下是对反射过程的练习,本人菜鸟一个:
 //给的只是个路径:com.test.reflex.Student,测试反射相关的info
       Stringpath="com.test.reflex.Student";
       //Studentstudent=new Student();
       Classclass1=Class.forName(path);
      //使用反射的过程中一般根据string获取对应的class
       //Classclass1=student.getClass();
      System.out.println("字段的info如下所示:");
       Field[]field=class1.getDeclaredFields();//获取的是字段,包括私有的,getFields不能得到private修饰的
       for(inti=0;i
         System.out.println(class1.getName()+"中的字段有"+field[i]);
       }
     System.out.println("构造的参数如下所示:");
      Constructor[]constructor=class1.getConstructors();
      for(int i=0;i
        System.out.println("构造的名字为:"+constructor[i].getName());
        TypeVariable[] variable=constructor[i].getTypeParameters();
        for (int j = 0; j < variable.length; j++){
         System.out.println(variable[i].getName());
       }
       
      }
     
     System.out.println("方法的相关的信息");
     
      Method[]methods=class1.getDeclaredMethods();
      for (int i = 0; i <methods.length; i++) {
        System.out.println("方法的名称:"+methods[i].getName());
        Class[] variable=methods[i].getParameterTypes();
        if(variable!=null){
          System.out.println("执行啦");
           for (int j = 0; j < variable.length; j++){
            System.out.println("参数的类型是:"+variable[j].getName());
          }
        }
       Class class2= methods[i].getReturnType();
       System.out.println("方法的返回类型是"+class2);
       
    }
     
     System.out.println("类的修饰符为:"+Modifier.toString(class1.getModifiers()));
      //通过这种方式可以获取类的修饰符
     System.out.println("该类所实现的接口为:"+class1.getInterfaces()[0].toString());
      //假设它实现了一个接口
     System.out.println("该类继承了那些类:"+class1.getSuperclass());
     //在java中只有单继承,故getSuperclass可一获取其父类
    }
原创粉丝点击