类的解剖(获取类的定义信息)
2015-09-01 22:17
357 查看
获取类的方法:method
获取类的构造方法:Construct
获取类的属性字段 Field
获取类的方法:method
/**获取类中的方法的信息 * getMethods():获取当前类及其父类声明的public方法 * getDeclareMethods();获取当前类声明的所有方法,包括private和public */ private static void fetchMethods(String className) throws ClassNotFoundException { Class c=Class.forName(className); Method methods[]=c.getMethods(); //Method methods[]=c.getDeclaredMethods(); for(int i=0;i<methods.length;i++){ Method m=methods[i]; System.out.println("name= "+m.getName());//获得方法名 System.out.println("delaringClass= "+m.getDeclaringClass());//该方法类名 Class paramTypes[]=m.getParameterTypes(); for(int j=0;j<paramTypes.length;j++){ System.out.println("param#"+j+": "+paramTypes[j]);//方法参数数据类型 } Class exception[]=m.getExceptionTypes(); for(int j=0;j<exception.length;j++){ System.out.println("exception#"+j+":"+exception[j]); } System.out.println("returnType= "+m.getReturnType()); System.out.println("-----------------------"); } }
获取类的构造方法:Construct
/** * 获取类中的方法的信息 * getConstructors(): 获取当前类的public构造方法 * * getDeclaredConstructors() :获取当前类声明的所有构造方法,包括private等其它非public方法 * @throws ClassNotFoundException */ private static void fetchConstructors(String className) throws ClassNotFoundException { Class c=Class.forName(className); Constructor cons[]=c.getConstructors(); for(int i=0;i<cons.length;i++){ Constructor con=cons[i]; System.out.println("name= "+con.getName()); System.out.println("declaringClass= "+con.getDeclaringClass()); Class paramTypes[]=con.getParameterTypes(); for(int j=0;j<paramTypes.length;j++){ System.out.println("param# "+j+":"+paramTypes[j]); } Class exception[]=con.getExceptionTypes(); for(int j=0;j<exception.length;j++){ System.out.println("exception#"+j+":"+exception[j]); } System.out.println("--------------"); } }
获取类的属性字段 Field
/** * getFiled() 类对象 * * */ private static void fetchFileds(String className) throws ClassNotFoundException { Class c = Class.forName(className); Field fields[] = c.getDeclaredFields(); for(int i=0;i<fields.length;i++){ Field fld = fields[i]; System.out.println("name= "+ fld.getName()); System.out.println("delaringClass= "+fld.getDeclaringClass()); System.out.println("type= "+ fld.getType()); int mod = fld.getModifiers();//语言修饰符private static //System.out.println("modifiers= "+ mod); System.out.println("modifiers= "+ Modifier.toString(mod)); System.out.println("-----------"); } }
相关文章推荐
- Windows内核编程基础篇之文件操作(二)
- Linq示例
- 9-1
- 【贪心算法】Huffman Tree
- 30多岁仍没有出路的程序员-应该为什么?
- 五种排序算法
- 固有属性与自定义属性
- A. Bear and Poker
- MongoDB 自动安装 shell
- 单例模式
- JAVA创建TXT,并写入数据
- 自学Java系列 笔记1 java的基本语法2
- ios开发中常用的数学函数
- 统计学习方法 –> 支持向量机
- Jquery网页加载进度条(随笔,当然要随便写,当日记动态心情写咯)
- opencv学习笔记(二)—显示图像
- 自定义控件的四种模式
- 文章标题
- Topcoder SRM 666 DIV 1
- 13.迭代器模式(设计模式笔记)