学习随笔——如何打印一个类的全部信息
来源:互联网 发布:基于java的毕业论文 编辑:程序博客网 时间:2024/06/07 16:37
import java.lang.reflect.*;import java.util.*;public class ReflectionTest { public static void main(String[] args) { //从命令行或用户输入读取类名 String name; if(args.length>0) name = args[0]; else{ Scanner in = new Scanner(System.in); System.out.println("输入类名 (例如 java.util.Date):"); name = in.next(); } try{ //打印类名和超类名 (if!=Object) Class cl = Class.forName(name); Class supercl = cl.getSuperclass(); String modifiers = Modifier.toString(cl.getModifiers()); if(modifiers.length()>0) System.out.print(modifiers+" "); System.out.print("class "+name); if(supercl!=null && supercl!=Object.class) System.out.print(" extends "+supercl.getName()); System.out.print("\n{\n"); printConstructors(cl); System.out.println(); printMethods(cl); System.out.println(); printFields(cl); System.out.println("}"); }catch(ClassNotFoundException e){ e.printStackTrace(); } System.exit(0); } /** * 打印类的所有构造函数 * @param cl 一个类 */ public static void printConstructors(Class cl){ Constructor[] constructors = cl.getDeclaredConstructors(); for(Constructor c : constructors){ String name = c.getName(); System.out.println(" "); String modifiers = Modifier.toString(c.getModifiers()); if(modifiers.length() > 0) System.out.print(modifiers+" "); 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(");"); } } /** * 打印类的所有方法 * @param cl 一个类 */ public static void printMethods(Class cl){ Method[] methods = cl.getDeclaredMethods(); for(Method m : methods){ Class retType = m.getReturnType(); String name = m.getName(); System.out.print(" "); //打印修改器、返回类型和方法名 String modifiers = Modifier.toString(m.getModifiers()); if(modifiers.length()>0) System.out.print(modifiers+" "); 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(");"); } } /** * 打印类的所有字段 * @param cl 一个类 */ public static void printFields(Class cl){ Field[] fields = cl.getDeclaredFields(); for(Field f:fields){ Class type = f.getType(); String name = f.getName(); System.out.print(" "); String modifiers = Modifier.toString(f.getModifiers()); if(modifiers.length()>0) System.out.print(modifiers+" "); System.out.println(type.getName()+" "+name+";"); } }}
阅读全文
0 0
- 学习随笔——如何打印一个类的全部信息
- 程序清单-打印一个类的全部信息
- 【Core Java Volume 2】反射---打印类的全部信息
- java控制台如何把一个对象的信息打印出来?
- 算法3:给一个字符数组(a-z),如何打印该数组成员构成集合的全部子集合
- 把一个表里的记录全部用insert打印出来
- 使用反射打印一个类的所有信息
- log4j日志打印全部异常信息
- 怎么让eclipse控制器打印全部信息
- linux打印全部make编译信息
- Delphi面向对象学习随笔五:一个真正的类
- 一个打印调试信息的例子
- 检查目标类的全部方法信息
- 如何截取UNIX终端的全部输出信息
- [Linux] 如何查看printk打印的信息?
- 随笔- printf不能打印log信息
- 一个菜鸟的学习经历随笔
- 如何控制打印Logcat打印信息?封装Logcat的简单工具类就可以了
- 阿里云部署Java web项目初体验(转)/linux 上配置jdk和安装tomcat
- 机器学习深入与强化--概念
- JS——面向对象基础
- windows10安装Framework3.5失败问题
- Java程序员成神列表
- 学习随笔——如何打印一个类的全部信息
- bzoj4243: 交朋友
- 内网、外网、动态IP的通俗解释
- 链表(linked list)
- System类中环境属性
- tomcat服务设置开机自动启动模式!
- h3c 构建中小企业网络 实验手册 第3章 笔记
- linux安全-禁止密码登录及root登录
- 支付开发(六)----支付宝支付的几种方式