获取类的元数据信息
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
}