Java反射获取类信息
来源:互联网 发布:java常见的设计模式 编辑:程序博客网 时间:2024/05/20 08:26
以Person类为例,用Java反射机制实现获取Person类信息
package org.lyk.run ;interface China{// 定义China接口public static final String NATIONAL = "China" ;// 定义全局常量public static final String AUTHOR = "李兴华" ;// 定义全局常量public void sayChina() ;// 无参的,没有返回值的方法public String sayHello(String name,int age) ;// 定义有两个参数的方法,并返回内容}public class Person implements China{private String name ;private int age ;public Person(){// 无参构造}public Person(String name){this.name = name ;// 设置name属性}public Person(String name,int age){this(name) ;this.age = age ;}private void test(){}public void sayChina(){// 覆写方法System.out.println("作者:" + AUTHOR + ",国籍:" + NATIONAL) ;}public String sayHello(String name,int age){return name + ",你好!我今年:" + age + "岁了!" ;}public void setName(String name){this.name = name ;}public void setAge(int age){this.age = age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}};
以下代码实现获取Person类信息
import java.lang.reflect.Constructor;import java.lang.reflect.Modifier;import java.lang.reflect.Method;import java.lang.reflect.Field;public class Test{public static void main(String[] args)throws Exception{ Class<?> c = Class.forName("org.lyk.run.Person");System.out.print(Modifier.toString(c.getModifiers()));System.out.println(" class " + c.getName());System.out.println("{");//获取字段代码Field[] fields = c.getFields();for(int i = 0; i < fields.length; i++){System.out.print("\t" + Modifier.toString(fields[i].getModifiers()) );System.out.println(" " + fields[i].getType().getName() + " arg_" + i + ";");}System.out.println();//获取构造函数代码Constructor[] constructors = c.getConstructors();for(int i = 0; i < constructors.length; i++){System.out.print("\t" + Modifier.toString(constructors[i].getModifiers()));System.out.print(" " + constructors[i].getName());System.out.print("(");Class<?>[] parameterTypes = constructors[i].getParameterTypes();for(int j = 0; j < parameterTypes.length; j++){if(j < parameterTypes.length - 1 ){System.out.print(parameterTypes[j].getName() + " arg_" + j + ",");}else{System.out.print(parameterTypes[j].getName() + " arg_" + j);}}System.out.print(")");{//输出异常Class<?>[] exceptionTypes = constructors[i].getExceptionTypes();if(exceptionTypes.length > 0){System.out.print(" throws Exception ");for(int k = 0; k < exceptionTypes.length; k++){if(k < exceptionTypes.length){System.out.print(exceptionTypes[k].getName() + " , ");}else{System.out.print(exceptionTypes[k].getName());}}}}System.out.println(" {}");}System.out.println();//获取成员函数代码Method[] declareMethods = c.getDeclaredMethods();for(int i = 0 ; i < declareMethods.length; i++ ){System.out.print("\t" + Modifier.toString(declareMethods[i].getModifiers()));System.out.print(" " + declareMethods[i].getReturnType().getName() + " ");System.out.print(declareMethods[i].getName());System.out.print("( ");{//输出参数Class<?>[] parameterTypes = declareMethods[i].getParameterTypes();for(int j = 0; j < parameterTypes.length; j++){if(j < parameterTypes.length-1){System.out.print(parameterTypes[j].getName() + " args_" + j + ", ");}else{System.out.print(parameterTypes[j].getName() + " args_" + j);}}}System.out.print(" )");{//输出异常Class<?>[] exceptionTypes = declareMethods[i].getExceptionTypes();if(exceptionTypes.length > 0){System.out.print(" throws Exception ");for(int k = 0; k < exceptionTypes.length; k++){if(k < exceptionTypes.length){System.out.print(exceptionTypes[k].getName() + " , ");}else{System.out.print(exceptionTypes[k].getName());}}}}System.out.println(" {}");}System.out.println("}");}}
0 0
- Java反射获取类信息
- java反射获取类信息
- java反射获取类的信息
- Java反射之获取类的信息
- Java基础-利用反射获取类信息
- Java反射机制-获取类信息
- java反射---获取类型信息
- Java反射机制-Class类获取类信息
- Java 反射(1):基本类周边信息获取
- Java 反射(3):类内部信息获取
- java反射——获取类的方法信息
- Java反射获取类和对象信息全解析
- Java反射获取类和对象信息全解析
- Java反射获取类和对象信息全解析
- Java反射获取类和对象信息全解析
- Java反射机制总结学习--获取类的信息
- Java反射获取类和对象信息全解析
- 利用java反射机制获取一个类中信息
- JQuery中$.ajax()方法参数详解
- KMP算法原理
- c++ 构造函数后面加冒号
- POJ 2348& HDU 2147&HDU 1846&POJ 1067&HDU 1850 简单的博弈
- POJ - 2195 Going Home (构图 最大匹配KM算法)
- Java反射获取类信息
- EVM相关知识及测量方法
- android stuio的一些基本设置
- 小白入门笔记——vs2010快捷键
- 数据库 oracle for update of 和 for update区别【经典】
- 组队赛第四场:最小生成树变形
- 有关NSString和NSMutableString的一些重要方法的使用
- HTML DOM setInterval() 方法---javascript抽奖备用
- HDU 3008 Warcraft