获取类的元数据信息

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

package classhandle;

import ng.reflect.Field;

import ng.reflect.Modifier;

import java.sql.Timestamp;

import java.util.Calendar;

public class GetMetaDataInformationOfClass {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Calendar birthday = Calendar.getInstance();

birthday.set(1988, 1, 11, 0, 1, 0);

Student stu = new Student("0002", "人参", true, new Timestamp(

birthday.getTimeInMillis()), 1.80);

// System.out.println(birthday.getTimeInMillis());

ClassInfo classInfo = new ClassInfo();

System.out.println(classInfo.getClassInfo(stu));

}

}

class ClassInfo {

public String getClassInfo(Object obj) {

StringBuffer result = new StringBuffer();

// 得到参数变量的Class引用变量

Class cls = obj.getClass();

// System.out.println(cls);

// 得到参数类变量的信息

Field[] fields = cls.getDeclaredFields();

// 得到参数类变量的完整类名(含有包的名称)

String fullName = cls.getName();

// System.out.println(fullName);

// 得到去除包名称的类名

String className = fullName.substring(fullName.indexOf(".") + 1);

// System.out.println(className);

// 如果有包的定义,可以得到包的名称

int packagePosition = stIndexOf('.');

// System.out.println(packagePosition);

String packageName = null;

if (packagePosition < 0)

packageName = "";

else

packageName = fullName.substring(0,

stIndexOf('.'));

// System.out.println(packageName);

// 输出包名和类名

result.append("包的名称:" + packageName + "\n");

result.append("类的名称:" + className + "\n");

for (Field field : fields) {

// 允许访问私有成员

field.setAccessible(true);

try {

// 输出私有属性信息

if (field.getModifiers() == Modifier.PRIVATE) {

result.append("私有属性" + field.getName() + "值为"

+ field.get(obj) + "\n");

}

// 输出受保护属性信息

if (field.getModifiers() == Modifier.PROTECTED) {

result.append("受保护属性" + field.getName() + "值为"

+ field.get(obj) + "\n");

}

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalAccessException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return result.toString();

}

}

class Student {

private String number = null;

private String name = null;

private boolean sex = false;

private Timestamp birthday = null;

private double height = 0;

public String getNumber() {

return number;

}

public void setNumber(String number) { this.number = number;

}

public String getName() {

return name;

}

public void setName(String name) {

= name;

}

public boolean isSex() {

return sex;

}

public void setSex(boolean sex) {

this.sex = sex;

}

public Timestamp getBirthday() {

return birthday;

}

相关文档
最新文档