簡述
創(chuàng)新互聯(lián)從2013年開始,先為鐵鋒等服務(wù)建站,鐵鋒等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為鐵鋒企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。一直對(duì)Java沒有現(xiàn)成的委托機(jī)制耿耿于懷,所幸最近有點(diǎn)時(shí)間,用反射寫了一個(gè)簡單的委托模塊,以供參考。
模塊API
public Class Delegater()//空參構(gòu)造,該類管理委托實(shí)例并實(shí)現(xiàn)委托方法 //添加一個(gè)靜態(tài)方法委托,返回整型值ID代表該方法與參數(shù)構(gòu)成的實(shí)例。若失敗,則返回-1。 public synchronized int addFunctionDelegate(Class<?> srcClass,String methodName,Object... params); //添加一個(gè)實(shí)例方法委托,返回整型值ID代表該方法與參數(shù)構(gòu)成的實(shí)例。若失敗,則返回-1。 public synchronized int addFunctionDelegate(Object srcObj,String methodName,Object... params); //根據(jù)整型ID從委托實(shí)例中刪除一個(gè)方法委托,返回是否成功 public synchronized Boolean removeMethod(int registerID); //依次執(zhí)行該委托實(shí)例中的所有方法委托(無序) public synchronized void invokeAllMethod(); //將參數(shù)表轉(zhuǎn)換為參數(shù)類型表 private Class<?>[] getParamTypes(Object[] params); //由指定的Class、方法名、參數(shù)類型表獲得方法實(shí)例 private Method getDstMethod(Class<?> srcClass,String methodName,Class<?>[] paramTypes); class DelegateNode(Method refMethod,Object[] params)//DelegateNode類在不使用Object構(gòu)造時(shí)敘述了一個(gè)靜態(tài)方法委托,包括方法實(shí)例及參數(shù)表 class DelegateNode(Object srcObj,Method refMethod,Object[] params)//DelegateNode類在使用Object構(gòu)造時(shí)敘述了一個(gè)實(shí)例方法委托,包括類實(shí)例、方法實(shí)例及參數(shù)表 public void invokeMethod(); //執(zhí)行該節(jié)點(diǎn)敘述的方法委托