您的位置:首页 > 编程语言 > Java开发

java反射获取类的信息

2016-10-17 21:37 169 查看

java反射获取类的信息

<
4000
h3>(一)类的方法
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));
}

}(注:本博客是小编的读书笔记)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: