1. 首先把要测试类的放出来。里面包含了成员变量以及构造函数:
public class TestClass { public String name = ""; public int age = 2; public double height = 2.2; private String address = ""; float salary; public TestClass() { } public TestClass(String name, int age, double height) { } }
2. 下面是获得成员变量以及构造函数的方法:
public class ClassUtil { /**获取类中的成员变量 * @param obj */ public static void getClassFieldUseGetFields(Object obj) { Class c = obj.getClass(); System.out.println("当前类的名称为:" + c.getName()); System.out.println("类中的成员变量有:"); Field[] fields = c.getFields();// 使用这个方法获得的是 public 的方法 // 使用 Modifier.toString(field.getModifiers()) 方法可以获得变量的修饰符:public private 等 for (Field field : fields) { System.out.println(Modifier.toString(field.getModifiers()) + " " + field.getGenericType() + " " + field.getName() + ""); } } /** * 获取类中的成员变量 * @param obj */ public static void getClassFieldUseGetDeclaredFields(Object obj) { Class c = obj.getClass(); System.out.println("当前类的名称为:" + c.getName()); System.out.println("类中的成员变量有:"); Field[] fields = c.getDeclaredFields();// 使用这个方法获得的是类里面所有的自己定义的变量 // 使用 Modifier.toString(field.getModifiers()) 方法可以获得变量的修饰符:public private 等 for (Field field : fields) { System.out.println(Modifier.toString(field.getModifiers()) + " " + field.getType() + " " + field.getName() + ""); } } /** * 获取类中的构造方法 * @param obj */ public static void getClassConInfo(Object obj) { Class c = obj.getClass(); Constructor[] con = c.getConstructors(); for (Constructor constructor : con) { System.out.print(Modifier.toString(constructor.getModifiers()) + " " + constructor.getName() + "("); Class[] parameterType = constructor.getParameterTypes(); for (Class class1 : parameterType) { System.out.print(class1.getName()+","); } System.out.print(")"); System.out.println(""); } } }
3. 运行代码:
public static void main(String[] args) { TestClass t = new TestClass(); System.out.println("使用 GetField-----------------------------------"); ClassUtil.getClassFieldUseGetFields(t); System.out.println("使用 GetDeclared-----------------------------------"); ClassUtil.getClassFieldUseGetDeclaredFields(t); System.out.println("获得类的构造方法的信息-----------------------------------"); ClassUtil.getClassConInfo(t); }
4. 运行结果:
当前类的名称为:cn.sumile.TestClass 类中的成员变量有: public class java.lang.String name public int age public double height 使用 GetDeclared----------------------------------- 当前类的名称为:cn.sumile.TestClass 类中的成员变量有: public class java.lang.String name public int age public double height private class java.lang.String address float salary 获得类的构造方法的信息----------------------------------- public cn.sumile.TestClass() public cn.sumile.TestClass(java.lang.String,int,double,)测试代码
转载请注明:热爱改变生活.cn » 反射获得类的成员变量以及构造方法——反射_3
本博客只要没有注明“转”,那么均为原创。 转载请注明链接:sumile.cn » 反射获得类的成员变量以及构造方法——反射_3