簡單Java多級反射

2021-08-15 15:46:16 字數 2573 閱讀 3116

/**

* 1.建立成員類,提供get set方法

* 2.建立設定成員屬性類

* 3.建立字串引數解析類

* @author administrator

*///成員

class emp

public void setename(string name)

public string getjob()

public void setjob(string job)

public dept getdept()

public void setdept(dept dept)

@override

public string tostring()

}//部門

class dept

public void setdname(string dname)

public string getloc()

public void setloc(string loc)

public company getcompany()

public void setcompany(company company)

@override

public string tostring()

}//公司

class company

public void setname(string name)

public string getaddress()

public void setaddress(string address)

@override

public string tostring() }/*

* 1、例項化成員類

* 2、設定成員屬性

* 3、獲取成員類

*/class empaction

public emp getemp()

}//字串解析

class beanoperation

public static void setbeanvalue(object actionobject,string msg) throws illegalacces***ception, illegalargumentexception, invocationtargetexception, nosuchmethodexception, securityexception, nosuchfieldexception

objectutils.setobjectvalue(currentobject, fields[i], value);

//            emp.dept.company    fields[0++]    (actionobject = currentobject,fields[0++])}}

}//字串處理

class stringutils

public static string initcap(string str) }/*

* 1、通過反射獲取類中的成員變數並檢查是否存在子類中以便後續的賦值

* 2、通過反射獲取類中的指定方法並呼叫該方法返回被例項化的類的物件

*/class objectutils

//    獲取類屬性

public static object getobject(object wrapobject,string attribute) throws illegalacces***ception, illegalargumentexception, invocationtargetexception, nosuchmethodexception, securityexception, nosuchfieldexception

if(field == null)

method method = wrapobject.getclass().getmethod(methodname);    //通過反射獲取指定類中的指定方法

return method.invoke(wrapobject);    //呼叫無參方法

}//    設定成員變數

public static void setobjectvalue(object wrapobject,string attribute,string value) throws nosuchfieldexception, securityexception, nosuchmethodexception, illegalacces***ception, illegalargumentexception, invocationtargetexception

if(field == null)

string methodname = "set" + stringutils.initcap(attribute);    

method method = wrapobject.getclass().getmethod(methodname,field.gettype());    //method = 方法(引數型別)

method.invoke(wrapobject, value);    //呼叫有參方法}}

public class test

}

java反射的簡單應用

反射 在執行過程中,通過類或者物件使用類中的所有方法或屬性。擁有的class檔案。獲取class類的物件。方式1 使用類的getclass 方法。方式2 資料型別的.class靜態屬性。方式3 使用的是class類的forname 靜態方法。類的全路徑。準備 suppresswarnings all...

java反射的簡單使用

前幾天專案中遇到乙個相對有意思的事情,那就是乙個inserthbase的工具類接收乙個物件,然後獲取到物件的每乙個屬性及其值,最後insert到hbase中 如 public class people public string getname public void setname string ...

java反射的簡單應用

1.乙個靜態方法,如果傳遞過來的是物件,則直接呼叫該物件的tostring 方法列印出來,如果是陣列,則把陣列中的每個元素列印出來。如果是物件則直接列印出來,是陣列則挨個列印出來 class arrayreflect printobject intarrays public static void ...