java 利用java反射機(jī)制動(dòng)態(tài)加載類的簡(jiǎn)單實(shí)現(xiàn)
如下所示:
////////////////// Load.java package org.bromon.reflect; import java.util.ArrayList; import java.util.List; public class Load implements Operator { @Override public List<?> act(List<?> params) { // TODO Auto-generated method stub List<String> result=new ArrayList<String>(); result.add(new String("加載成功")); return result; } } /////////////////// Operator.java package org.bromon.reflect; import java.util.*; public interface Operator { public List<?> act(List<?> params); } /////////////Store.java package org.bromon.reflect; import java.util.ArrayList; import java.util.List; public class Store implements Operator { @Override public List<?> act(List<?> params) { // TODO Auto-generated method stub List<String> result=new ArrayList<String>(); result.add(new String("Store")); return result; } } ///////////////Success.java package org.bromon.reflect; import java.util.List; import java.util.ArrayList; public class Success implements Operator { @Override public List<?> act(List<?> params) { // TODO Auto-generated method stub List<String> result=new ArrayList<String>(); result.add(new String("操作成功")); return result; } } ////////////////////////TestReflect.java package org.bromon.reflect; import java.io.FileInputStream; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Properties; import java.util.List; public class TestReflect { private String loadProtocal(String header) { String result = null; try { Properties prop = new Properties(); FileInputStream fis = new FileInputStream("emp.properties"); prop.load(fis); result = prop.getProperty(header); fis.close(); } catch (Exception e) { System.out.println(e); } return result; } // 針對(duì)消息作出響應(yīng),利用反射導(dǎo)入對(duì)應(yīng)的類 public String response(String header, String content) { String result = null; String s = null; try { /* * 導(dǎo)入屬性文件emp.properties,查詢header所對(duì)應(yīng) * * 的類的名字 通過(guò)反射機(jī)制動(dòng)態(tài)加載匹配的類,所有的類都 * * 被Operator接口隔離 可以通過(guò)修改屬性文件、添加新的類(繼 * * 承MsgOperator接口)來(lái)擴(kuò)展協(xié)議 */ s = "org.bromon.reflect." + this.loadProtocal(header); // 加載類 Class<?> c = Class.forName(s); // 創(chuàng)建類的事例 Operator mo = (Operator) c.newInstance(); // 構(gòu)造參數(shù)列表 Class<?> params[] = new Class[1]; params[0] = Class.forName("java.util.List"); // 查詢act方法 Method m = c.getMethod("act", params); List<String> args = new ArrayList<String>(); args.add(content); // 調(diào)用方法并且獲得返回 Object returnObject = m.invoke(mo, args); List<?> list=(List<?>)returnObject; System.out.println(list.get(0)); } catch (Exception e) { System.out.println("Handler-response:" + e); } return result; } public static void main(String args[]) { TestReflect tr = new TestReflect(); tr.response("2000", "消息內(nèi)容"); } }
以上就是小編為大家?guī)?lái)的java 利用java反射機(jī)制動(dòng)態(tài)加載類的簡(jiǎn)單實(shí)現(xiàn)的全部?jī)?nèi)容了,希望對(duì)大家有所幫助,多多支持腳本之家~
- JAVA反射機(jī)制實(shí)例教程
- Java反射機(jī)制的實(shí)現(xiàn)詳解
- 通過(guò)java反射機(jī)制動(dòng)態(tài)調(diào)用某方法的總結(jié)(推薦)
- java反射機(jī)制示例詳解
- 利用java反射機(jī)制調(diào)用類的私有方法(推薦)
- Java反射機(jī)制詳解
- Java反射機(jī)制的學(xué)習(xí)總結(jié)
- 老生常談Java反射機(jī)制(必看篇)
- Java的反射機(jī)制---動(dòng)態(tài)調(diào)用對(duì)象的簡(jiǎn)單方法
- Java開(kāi)發(fā)反射機(jī)制的實(shí)戰(zhàn)經(jīng)驗(yàn)總結(jié)
相關(guān)文章
JAVA應(yīng)用系統(tǒng)工具快捷托盤(pán)實(shí)例代碼
JAVA應(yīng)用系統(tǒng)工具快捷托盤(pán)實(shí)例代碼,需要的朋友可以參考一下2013-02-02java實(shí)現(xiàn)網(wǎng)上購(gòu)物車(chē)程序
這篇文章主要介紹了java實(shí)現(xiàn)網(wǎng)上購(gòu)物車(chē)程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01java Collection 之List學(xué)習(xí)介紹
本篇文章小編為大家介紹,java Collection 之List學(xué)習(xí)介紹。需要的朋友參考下2013-04-04關(guān)于Java中使用jdbc連接數(shù)據(jù)庫(kù)中文出現(xiàn)亂碼的問(wèn)題
這篇文章主要介紹了關(guān)于Java中使用jdbc連接數(shù)據(jù)庫(kù)中文出現(xiàn)亂碼的問(wèn)題,默認(rèn)的編碼和數(shù)據(jù)庫(kù)表中的數(shù)據(jù)使用的編碼是不一致的,如果是中文,那么在數(shù)據(jù)庫(kù)中執(zhí)行時(shí)已經(jīng)是亂碼了,需要的朋友可以參考下2023-04-04Servlet服務(wù)端實(shí)現(xiàn)原理詳解
Servlet是Sun公司開(kāi)發(fā)動(dòng)態(tài)web的一門(mén)技術(shù),Sun公司在這些API中提供了一個(gè)接口叫做:Servlet,如果想開(kāi)發(fā)一個(gè)Servlet程序,只需要完成兩個(gè)小步驟:編寫(xiě)一個(gè)類,實(shí)現(xiàn)Servlet接口、把開(kāi)發(fā)好的Java類部署到web服務(wù)器中。但是你了解Servlet實(shí)現(xiàn)的原理嗎2022-07-07詳解Spring 參數(shù)驗(yàn)證@Validated和@Valid的區(qū)別
這篇文章主要介紹了詳解參數(shù)驗(yàn)證 @Validated 和 @Valid 的區(qū)別,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01詳談Java枚舉、靜態(tài)導(dǎo)入、自動(dòng)拆裝箱、增強(qiáng)for循環(huán)、可變參數(shù)
下面小編就為大家?guī)?lái)一篇詳談Java枚舉、靜態(tài)導(dǎo)入、自動(dòng)拆裝箱、增強(qiáng)for循環(huán)、可變參數(shù)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08Java實(shí)現(xiàn)解析JSON大文件JsonReader工具詳解
這篇文章主要介紹了Java實(shí)現(xiàn)解析JSON大文件的工具JsonReader使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01關(guān)于Java中的mysql時(shí)區(qū)問(wèn)題詳解
這篇文章主要給大家介紹了關(guān)于Java中mysql時(shí)區(qū)問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05