获取成员变量以及构造函数信息

转载请注明:

首先写一个获取成员变量的静态方法:

成员变量也是对象,, 是java.lang.reflect.Field类的对象 Field类封装了关于成员变量的操作 getFields()获取的是所有的public的成员变量的信息 getDeclaredFields()获取的是该类自己声明的成员变量的信息,可能是私有的也可能是共有的public static void printFieldMessage(Object obj){Class c=obj.getClass();//传递的是哪个子类的对象,c就是该子类的类类型/*成员变量也是对象,是java.lang.reflect.Field类的对象Field类封装了关于成员变量的操作getFields()获取的是所有的public的成员变量的信息getDeclaredFields()获取的是该类自己声明的成员变量的信息,可能是私有的也可能是共有的*/Field[] fs;//fs=c.getFields();fs=c.getDeclaredFields();for(Field field:fs){//获取成员变量类型的类类型,也就是说,如果得到的是int类型的成员变量,那么返回int.classClass fieldType =field.getType();String typeName=fieldType.getName();//得到成员变量类型//得到成员变量的名字String fieldName=field.getName();System.out.println("成员变量类型:"+typeName+" 成员变量名为:"+fieldName);}}

测试代码:

public static void main(String[] args) {String s="hello";Integer integer=8;//printClassMethodMessage(s);//获得方法信息printFieldMessage(integer);//获得成员变量信息// printConMessage(integer);}

测试结果:

run:成员变量类型:int 成员变量名为:MIN_VALUE成员变量类型:int 成员变量名为:MAX_VALUE成员变量类型:java.lang.Class 成员变量名为:TYPE成员变量类型:[C 成员变量名为:digits成员变量类型:[C 成员变量名为:DigitTens成员变量类型:[C 成员变量名为:DigitOnes成员变量类型:[I 成员变量名为:sizeTable成员变量类型:int 成员变量名为:value成员变量类型:int 成员变量名为:SIZE成员变量类型:int 成员变量名为:BYTES成员变量类型:long 成员变量名为:serialVersionUID

然后在写一个获取对象的构造方法的函数:

构造函数也是对象, 是java.lang.reflect.Constructor封装了构造函数的信息 public static void printConMessage(Object obj){//要想获取类的信息,首先获得它的类类型Class c=obj.getClass();/*构造函数也是对象,是java.lang.reflect.Constructor封装了构造函数的信息*/Constructor [] cs;//cs=c.getConstructors();//获得所有的共有的方法cs=c.getDeclaredConstructors();//获取所有的构造方法for(Constructor constructor:cs){System.out.print("构造方法 "+constructor.getName()+"(");//下面获取构造函数的参数列表,//得到的是参数列表的类类型Class[] paramTypes=constructor.getParameterTypes();for(Class c1:paramTypes){System.out.print(c1.getName()+",");}System.out.print(")");System.out.println();}测试代码:

public static void main(String[] args) {String s="hello";//Integer integer=8;//printClassMethodMessage(s);//获得方法信息//printFieldMessage(integer);//获得成员变量信息printConMessage(s);}

测试结果: 即string类的所有构造方法

构造方法 java.lang.String([B,int,int,)构造方法 java.lang.String([B,java.nio.charset.Charset,)构造方法 java.lang.String([B,java.lang.String,)构造方法 java.lang.String([B,int,int,java.nio.charset.Charset,)构造方法 java.lang.String([B,int,int,java.lang.String,)构造方法 java.lang.String([C,boolean,)构造方法 java.lang.String(java.lang.StringBuilder,)构造方法 java.lang.String(java.lang.StringBuffer,)构造方法 java.lang.String([B,)构造方法 java.lang.String([I,int,int,)构造方法 java.lang.String()构造方法 java.lang.String([C,)构造方法 java.lang.String(java.lang.String,)构造方法 java.lang.String([C,int,int,)构造方法 java.lang.String([B,int,)构造方法 java.lang.String([B,int,int,int,)

生气是拿别人做错的事来惩罚自己

获取成员变量以及构造函数信息

相关文章:

你感兴趣的文章:

标签云: