版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/88047398
目录
理论
成员变量也是对象!
java.lang.reflect.Field类封装了关于成员变量的操作;
getFields()方法获取的是所有public的成员变量的信息;
getDeclaredFields获取的是该类自己声明的成员的信息。
成员变量也是类!
java.lang.reflect.Field类封装了关于成员变量的操作;
getFields()方法获取的是所有的public的成员变量的信息;
getDeclaredFields获取的是该类自己声明的成员变量的信息
注意:在任意情况下想获得一个类的信息,首先要得到这个类的类类型,得到了类的类类型,就可以很轻松的获得类信息
实例
程序结构如下:
源码如下:
ClassUtil.java
package my;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
public class ClassUtil {
public static void printConMessage(Object obj) {
Class c = obj.getClass();
Constructor[] cs = c.getDeclaredConstructors();
for(Constructor constructor : cs) {
System.out.print(constructor.getName() + "(");
//获取构造函数参数列表
Class[] paramTypes = constructor.getParameterTypes();
for(Class class1 : paramTypes) {
System.out.print(class1.getName() + ",");
}
System.out.println(")");
}
}
public static void printMemberMessage(Object obj) {
Class c = obj.getClass();
Field[] fs = c.getDeclaredFields();
for(Field field : fs) {
//得到成员变量的类型的类型
Class fieldType = field.getType();
String typeName = fieldType.getName();
//得到成员变量的名称
String fieldName = field.getName();
System.out.println(typeName + "\t" + fieldName);
}
}
}
Test.java
package my;
public class Test {
public static void main(String[] args) {
//ClassUtil.printMemberMessage("Hello");
ClassUtil.printConMessage("Hello");
}
}
printConMessage运行截图如下:
printMemberMessage运行截图如下: