純API記錄
- 反射獲取類信息日志:
package com.stu.java.reflection;
public final class RelectionTest {
private java.lang.String name;
private int age;
private boolean gender;
private java.lang.String desc;
public com.stu.java.reflection.RelectionTest ( ) {}
public com.stu.java.reflection.RelectionTest ( java.lang.String p0, int p1, ) {}
public java.lang.String getName( ) {}
public void setName( java.lang.String mp0) {}
public int getAge( ) {}
public void setAge( int mp0) {}
public boolean isGender( ) {}
public void setGender( boolean mp0) {}
public java.lang.String getDesc( ) {}
public void setDesc( java.lang.String mp0) {}
}
- 準(zhǔn)備一個(gè)測試類 RelectionTest
package com.stu.java.reflection;
final public class RelectionTest {
private String name;
private int age;
private boolean gender;
private String desc;
public RelectionTest(){}
public RelectionTest(String name, int age) {
this.name = name;
this.age = age;
}
···下面是 setter getter方法
- 使用反射獲取完整類信息
private static void relectionClassInfo() throws Exception {
Class<RelectionTest> c = (Class<RelectionTest>) Class.forName("com.stu.java.reflection.RelectionTest");
//獲取包信息
Package pg = c.getPackage();
LogUtils.sysPrintln("package %s;", pg.getName());
//獲取類修飾符 public/ final
int m = c.getModifiers();
LogUtils.sysPrint(Modifier.toString(m));
//判斷類型
if (Modifier.isInterface(m)) {
LogUtils.sysPrint(" interface ");
} else {
LogUtils.sysPrint(" class ");
}
LogUtils.sysPrintln(c.getSimpleName() + " {");
//獲取類的屬性
Field[] fields = c.getDeclaredFields();
for (Field f : fields) {
//屬性 修飾符
LogUtils.sysPrint(Modifier.toString(f.getModifiers()));
//屬性類型
LogUtils.sysPrint(" " + f.getType().getName());
//屬性名稱
LogUtils.sysPrintln(" " + f.getName() + ";");
}
//獲取構(gòu)造器
Constructor[] constructors = c.getDeclaredConstructors();
for (Constructor con : constructors) {
LogUtils.sysPrint(Modifier.toString(con.getModifiers()));
LogUtils.sysPrint(" " + con.getName() + " (");
//獲取構(gòu)造器參數(shù)
Class<?>[] ps = con.getParameterTypes();
for (int i = 0; i < ps.length; i++) {
Class<?> cl = ps[i];
LogUtils.sysPrint(" " + cl.getName() + " p%s, ", i);
}
LogUtils.sysPrintln(" ) {}");
}
//獲取成員方法
Method[] methods = c.getDeclaredMethods();
for (Method md : methods) {
LogUtils.sysPrint(Modifier.toString(md.getModifiers()));
//獲取返回值類型名稱
LogUtils.sysPrint(" " + md.getReturnType().getName());
LogUtils.sysPrint(" " + md.getName() + "( ");
//獲取方法參數(shù)
Class<?>[] mPs = md.getParameterTypes();
for (int i = 0; i < mPs.length; i++) {
Class<?> mp = mPs[i];
LogUtils.sysPrint(mp.getName() + " mp%s", +i);
}
LogUtils.sysPrintln(") {}");
}
LogUtils.sysPrintln("}");
}
END
參考:https://github.com/HarkBen/JavaSE6Tutorial
補(bǔ)充了獲取構(gòu)造參數(shù)及方法參數(shù)