static void getClassInfo(Object o) {
Class c = o.getClass();
// 取得套件代表物件
Package p = c.getPackage();
out.printf("package %s;%n", p.getName());
// 取得型態修飾,像是public、final
int m = c.getModifiers();
out.print(Modifier.toString(m) + " ");
// 如果是介面
if (Modifier.isInterface(m)) {
out.print("interface ");
} else {
out.print("class ");
}
out.println(c.getName() + " {");
//-----------------------
// 取得宣告的資料成員代表物件
Field[] fields = c.getDeclaredFields();
for (Field field : fields) {
// 顯示權限修飾,像是public、protected、private
out.print("\t"
+ Modifier.toString(field.getModifiers()));
// 顯示型態名稱
out.print(" "
+ field.getType().getName() + " ");
// 顯示資料成員名稱
out.println(field.getName() + ";");
}
out.println("----------------------");
//-----------------------
Method[] methods = c.getDeclaredMethods();
for (Method method : methods) {
// 顯示權限修飾,像是public、protected、private
out.print("\t"
+ Modifier.toString(
method.getModifiers()));
// 顯示返回值型態名稱
out.print(" "
+ method.getReturnType().getName() + " ");
// 顯示方法名稱
out.println(method.getName() + "();");
}
out.println("}");
}