一段学习反射的代码

原创 2004年10月05日 01:18:00

package testreflect;
import javax.swing.*;

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

public class Test {
  public Test() {
  }

  public static void printConstructors(Class c1){
    Constructor[] constructors=c1.getDeclaredConstructors();
    for(int i=0;i<constructors.length;i++){
      Constructor c=constructors[i];
      String name=c.getName();
      System.out.print(Modifier.toString(c.getModifiers()));
      System.out.print("   "+name+"(");

      Class[] paramTypes=c.getParameterTypes();
      for(int j=0;j<paramTypes.length;j++){
        if(j>0) System.out.print(", ");
          System.out.print(paramTypes[j].getName());
      }
      System.out.println(");");
    }
  }

  public static void printMethods(Class c1){
    Method[] methods=c1.getDeclaredMethods();
    for(int i=0;i<methods.length;i++){
      Method m=methods[i];
      Class retType=m.getReturnType();
      String name=m.getName();
      System.out.print(Modifier.toString(m.getModifiers()));
      System.out.print("   "+retType.getName()+" "+name+"(");

      Class[] paramTypes=m.getParameterTypes();

      for(int j=0;j<paramTypes.length;j++){
        if(j>0) System.out.print(", ");
          System.out.print(paramTypes[j].getName());

      }
       System.out.println(");");
    }
  }

  public static void printFields(Class c1){
    Field[] fields=c1.getDeclaredFields();

    for(int i=0;i<fields.length;i++){
      Field f=fields[i];
      Class type=f.getType();
      String name=f.getName();
      System.out.print(Modifier.toString(f.getModifiers()));
      System.out.println("   "+type.getName()+" "+name+";");
    }
  }

  public static void main(String[] args) {
    String name;
    if(args.length>0){
      name=args[0];

    }else{
      name=JOptionPane.showInputDialog("Class name (e.g. java.util.Date):");
    }
    try{
      Class c1=Class.forName(name);
      Class superc1=c1.getSuperclass();
      System.out.println("class "+name);
      System.out.println("/n{/n");
      printConstructors(c1);
      System.out.println();
      printMethods(c1);
       System.out.println();
      printFields(c1);
      System.out.println("}");

    }catch(ClassNotFoundException e){
      e.printStackTrace();
    }
    System.exit(0);
  }

 

}

java反射最简单最本质的一段代码

java反射最简单最本质的一段代码
  • breaknull
  • breaknull
  • 2016年10月12日 15:38
  • 541

一段代码学习几个Python知识点

########################################################### zip(a, b)函数,将它可迭代的对象a, b作为参数,将a, b中对应的元...
  • vernice
  • vernice
  • 2016年03月19日 11:09
  • 1501

Java反射学习总结(一)

Java提供的反射机制允许我们在运行时期动态载入类,检测和修改它本身状态或行为,要举反射机制的一个实例的话,就是在整合开发环境中所提供的方法提示或者类的检查工具,另外像jsp中的javabean自动收...
  • Melod_bc
  • Melod_bc
  • 2016年12月04日 00:10
  • 298

Java反射机制学习总结

定义一、能够分析类能力的程序成为反射。(核心卷一定义) 定义二、 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。...
  • hanxueyu666
  • hanxueyu666
  • 2016年08月11日 16:54
  • 345

反射的基本用法

反射给java提供了,运行时获取一个类实例的可能,这一点非常灵活,你仅仅传一个类的全限定名,就能通过反射,来获取对应的类实例,我们一般会用Class类,来调用这个被反射的Objcet类下的:构造方法,...
  • HUandroid
  • HUandroid
  • 2016年09月09日 12:38
  • 971

简单的反射(代码)

//反射--类模版 //一个项目中一个类会加载几次? //--当一个类被加载后会在内容中生成一个Class对象(类模版) public class Learn1 { private S...
  • pengxinjing
  • pengxinjing
  • 2017年12月08日 15:02
  • 21

工具类—反射工具类

提供访问私有变量,获取泛型类型Class, 提取集合中元素的属性, 转换字符串到对象等Util函数....
  • u012758088
  • u012758088
  • 2017年02月20日 14:06
  • 332

java反射机制代码

今天,自己特意复习了一下java的反射机制,对一个类中的属性、方法及构造方法通过反射机制进行操作,关于反射机制的一些概念就不多说了,大家可以看我以前的java基础博客进行了解,下面的都是一些代码: ...
  • HarderXin
  • HarderXin
  • 2014年04月09日 17:07
  • 2195

反射的代码

package com.oracle.reflection;package com.oracle.reflection; import java.util.LinkedList; public c...
  • zyy951130
  • zyy951130
  • 2017年06月15日 14:55
  • 98

Java反射机制的原理与简单使用

一、 原理     简单的来说,反射机制其实就是指程序在运行的时候能够获取自身的信息。如果知道一个类的名称/或者它的一个实例对象, 就能把这个类的所有方法和变量的信息(方法名,变量名,方法,修饰...
  • superguy2014
  • superguy2014
  • 2016年08月17日 15:11
  • 335
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一段学习反射的代码
举报原因:
原因补充:

(最多只允许输入30个字)