java反射获取类的信息
(一)类的方法
import java.lang.reflect.Method;
public class ClassUtil {
public static void printClassMessage(Object obj){
Class c=obj.getClass(); //获取要打印的"(包括类,数据类型等等)"的类类型
/*
*打印方法的返回值类型
* */
Method[] m=c.getMethods(); //获取该类中的所有public方法的类类型 (包括父类继承来的方法)
// Method[] m=c.getDeclaredMethods(); 获取该类中的所有方法的类类型 (自己定义的方法,不包括父类继承来的方法)
for(int i=0;i<m.length;i++){
Class returnType=m[i].getReturnType(); //获取方法返回值的类类型
System.out.print(returnType.getName()+" ");//获取方法返回值的类名称
System.out.print(m[i].getName()+"("); //获取方法名
Class[] params=m[i].getParameterTypes();//获取参数列表的数据类型的类类型,一个一个保存在params中
for(Class p:params){
System.out.print(p.getName()+",");//获取每一个参数
}
System.out.println(")");
}
}
}
(二)类的成员变量
/*
* 类的成员变量
* */
public static void printClassFieldMessage(Object obj){
Class c=obj.getClass(); //获取类的类类型
//获取所有的成员变量
Field[] fields=c.getFields();
for(Field f:fields){
//获取成员变量的类类型
Class fieldType=f.getType();
//获取成员变量的名字
String fieldName=f.getName();
System.out.println(fieldType+" "+fieldName);
}
}
(三)类的构造方法
/*
* 类的构造方法
* */
public static void printClassConstructorMessage(Object obj){
Class c=obj.getClass(); //获取类的类类型
//获取类的public构造方法
//Constructor[] con=c.getConstructors();
//获取类的所有构造方法
Constructor[] constructor=c.getDeclaredConstructors();
for(Constructor con:constructor){
//获取构造方法的名字
System.out.print(con.getName()+"(");
//获取构造方法的参数类型的类类型列表
Class[] paramTypes=con.getParameterTypes();
for(Class p:paramTypes){
System.out.print(p.getName()+",");
}
System.out.println(")");
}
}
(四)测试
public class Test {
public static void main(String[] args) {
System.out.println("======类的方法========");
String s1="123";
ClassUtil.printClassMethodMessage(s1);
System.out.println("=======类的成员=======");
ClassUtil.printClassFieldMessage(new Integer(1));
System.out.println("=======类的构造方法=======");
ClassUtil.printClassConstructorMessage(new Integer(1));
}
}
(注:本博客是小编的读书笔记)