反射获得类的成员变量以及构造方法——反射_3

无简介

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,)

[dl href=‘http://pan.baidu.com/s/1jGJ5uCI’]测试代码[/dl]

-------------本文结束  感谢您的阅读-------------
下次一定